奇怪的.htaccess url重写差异

时间:2009-07-29 05:00:34

标签: .htaccess mod-rewrite

因此http://myopicvoid.org/在Firefox或Chrome中加载时,会自动重定向到http://myopicvoid.org/main,但不会重定向到IE8。究竟是什么原因造成的呢?我的.htaccess如下:

Options +FollowSymlinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^myopicvoid\.org$
RewriteCond %{REQUEST_URI} ^/$
RewriteRule / /main [r=301,L]

RewriteCond %{HTTP_HOST} ^myopicvoid\.org$
RewriteCond %{REQUEST_URI} !^/script/.*
RewriteCond %{REQUEST_URI} !^/style/.*
RewriteRule ^(.*)$ /script/$1.py [L]

在/ script中存在一个main.py,但我在IE中遇到错误404 Not Found(脚本未找到或无法stat:script / .py)。帮助

2 个答案:

答案 0 :(得分:2)

我建议改变

RewriteCond %{HTTP_HOST} ^myopicvoid\.org$
RewriteCond %{REQUEST_URI} ^/$
RewriteRule / /main [r=301,L]

要:

RewriteCond %{HTTP_HOST} ^myopicvoid\.org$
RewriteRule ^/?$ /main [r=301,L]

所以,我所做的就是删除条件,但是规则只匹配任何一个,或者只是一个前斜线。这种情况并非真的有必要;重要的是要注意mod_rewrite首先处理规则,然后检查它们是否符合它们的条件,所以这应该更有效率。

如果请求不包含尾部斜杠,这将更加宽容。

答案 1 :(得分:0)

离开我的头顶 - 当您从某些浏览器发出请求时,URL http://myopicvoid.org/可能会删除尾部斜杠吗?这会阻止“/”匹配第一个RewriteRule