缺少尾部斜杠时不执行.htaccess

时间:2011-07-14 16:11:32

标签: apache .htaccess mod-rewrite trailing-slash

这是我遇到的最棘手的问题。我在Apache / 2.2.13(Linux / SUSE)中的.htaccess中使用mod_rewrite,并且当URL中没有尾部斜杠时似乎没有调用它。我通过将垃圾放入.htaccess文件进行测试,并且在添加尾部斜杠时仅收到500个错误,但省略时为404。老实说,我不明白为什么。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

/name fails with 404
/name/ is successful

1 个答案:

答案 0 :(得分:0)

问题是/name是apache 通常设法映射到目录/name/的文件名,但有时这种机制会失败。我有一个远程类似的问题,并根据Apache文档中URL Rewriting Guide Trailing Slash Problem 部分,按照建议解决问题。

我认为在您的情况下,您可以尝试将以下行(我在RewriteEngine On之后建议)添加到您的Apache配置文件中,如果您有权访问它:

 RewriteBase    /
 RewriteRule    ^name$  name/  [R]