这是我遇到的最棘手的问题。我在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
答案 0 :(得分:0)
问题是/name
是apache 通常设法映射到目录/name/
的文件名,但有时这种机制会失败。我有一个远程类似的问题,并根据Apache文档中URL Rewriting Guide的 Trailing Slash Problem 部分,按照建议解决问题。
我认为在您的情况下,您可以尝试将以下行(我在RewriteEngine On
之后建议)添加到您的Apache配置文件中,如果您有权访问它:
RewriteBase /
RewriteRule ^name$ name/ [R]