Apache .htaccess用斜杠重写
我正在尝试使用Apache .htaccess用斜杠重写,apache,.htaccess,Apache,.htaccess,我正在尝试使用.htaccess 从 example.com/daily.php到example.com/daily(和example.com/daily/) 使用以下代码: Options +FollowSymLinks RewriteEngine on RewriteRule daily/$ daily.php 然而: example.com/daily/=ok example.com/daily=不正常 在上面的RewriteRule指令中,daily/$是一个正则表达式(regex
.htaccess
从
example.com/daily.php
到example.com/daily
(和example.com/daily/
)
使用以下代码:
Options +FollowSymLinks
RewriteEngine on
RewriteRule daily/$ daily.php
然而:
=okexample.com/daily/
=不正常example.com/daily
RewriteRule
指令中,daily/$
是一个正则表达式(regex),它与请求中的URL路径匹配。此正则表达式包含一个尾随斜杠(/
),因此这显然与不以斜杠结尾的URL不匹配
如果您想同时匹配/daily/
和/daily
(尽管我不建议这样做-请参见下面的注释),那么您需要在正则表达式中选择尾部斜杠。您可以在该字符后面加上?
(问号),使其成为可选字符。例如:
RewriteRule ^daily/?$ daily.php [L]
我还包括了字符串锚点的开头,因此它只匹配/daily
,而不匹配/daily
。如果您计划添加更多指令,则可能需要L
(last
)标志
旁白:如果您同时允许
/daily/
和/daily
,这两个URL在技术上是两个不同的URL,则可能存在“重复内容”。您应该选择其中一个作为规范URL。也可以选择将非规范版本路由到另一个。“从example.com/daily.php
到example.com/daily
(和mysite.com/daily/
)”-你的意思是相反的吗?!
RewriteRule ^daily/?$ daily.php [L]