我有一个网站,使用 SEF URL 和 htaccess RewriteRules 来提供页面。在 IE9 出现之前,这几年一直运行良好。
现在看起来链接没有被重写,该网站已经陷入瘫痪。
我尝试了不同的兼容模式,但都无济于事,我反复尝试了重写规则,尝试了不同的文档类型和其他一些浏览器设置。我同意,如果问题出在 htaccess 文件上,理论上它不可能是浏览器特有的问题,但这个网站在 IE8、firefox 和 chrome 中都能正常工作。我已经通过验证器运行了重写规则,看起来不错。任何想法都会很感激,因为我已经没有主意了。
该网站是 www.marlboroughsounds.co.nz 示例链接是
http://www.marlboroughsounds.co.nz/walking/freedom-walk-queen-charlotte-track/4dfw
并且不起作用的重写规则如下所示:
RewriteRule ^walking/.*/([a-z0-9_]*)/?$ /walking.php?act_code=$1 [L]
链接失败并显示浏览器 404 页面,甚至不是我为该网站自定义的 404 页面。
由于我被难住了,所以如果能提供任何想法我将非常感激。
答案1
正如一些人指出的那样,页面本身不会影响 htaccess 文件的工作方式,因此我将注意力集中在页面本身上,经过一系列长时间的排除测试后,我发现我在页面顶部包含的用于启用 Wordpress 插件在该页面上运行的插件在 IE9 中引起了某种冲突,从而导致链接中断。
我认为该包含部分 Wordpress URL 处理操作导致了问题。当我仅加载运行插件所需的部分包含时,它就正常工作了!!!
答案2
浏览器不负责重写内容。您的访问日志应包含请求,以便您了解请求的内容。另外,请检查您的错误日志以查看是否有任何错误。
如果请求没有到达您的服务器,那么我将在客户端使用日志代理来查看请求的内容。查看浏览器收到的页面源代码有助于确定页面未按预期工作的原因。
如果在浏览器上使用 Javascript 建立链接,则可能无法正常工作。查看访问日志以查看到达的内容。
添加 Rewritelog 指令以生成重写日志,这可能有助于诊断问题。完成后注释掉或删除该指令。