【问题标题】:Weird .htaccess url rewrite discrepancy奇怪的 .htaccess url 重写差异
【发布时间】:2009-07-29 13:14:18
【问题描述】:

所以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 (script not found or unable to stat: script/.py)。帮忙?

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    我会建议改变

    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首先处理规则,然后检查它们是否满足条件,所以这应该更有效。

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

    【讨论】:

      【解决方案2】:

      在我的脑海中 - 当您从某些浏览器发出请求时,也许 URL http://myopicvoid.org/ 的尾部斜杠被删除了?这会阻止“/”匹配第一个RewriteRule

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-04
        • 1970-01-01
        相关资源
        最近更新 更多