【发布时间】:2010-12-10 17:53:01
【问题描述】:
这是一个很奇怪的问题,我只希望我能解释清楚。
基本上,我们今天对一个客户网站进行了重大更新,需要更新 htaccess 中的一些重写规则以适应新的结构等...
所以,我们最初有这样的东西:
RewriteRule ^/resources/?$ index.php?id=resources
RewriteRule ^/media/?$ media.php
我们改为:
RewriteRule ^/resources/?$ index.php?id=resources
RewriteRule ^/media/?$ index.php?id=media
但是当我们访问http://www.example.com/media 时 - 它正在显示旧的媒体页面。然后,当我们从文档根目录中删除旧的 media.php 时,我们得到了 404。某处仍在将 /media 映射到 media.php - 并忽略重写规则。
奇怪的是 - 文件中的所有其他重写规则都工作正常 - 里面大约有 20 条左右。
我们已经跟踪了 vhost 和其他配置文件,但找不到任何对媒体或其他损坏的重定向(总共三个)的引用 - 所以我们很难过。
【问题讨论】:
-
你重启了网络服务器吗?
-
是的,我们做到了——尽管这通常不会影响目录级别的 htaccess(而且它没有)
-
但是当在 .htaccess 文件中使用 mod_rewrite 时,每个目录的路径前缀会从请求 URI 中删除,因此也需要从模式中删除。所以给定的规则根本不应该在 .htaccess 文件中起作用。
-
抱歉...不确定我们是否完全在同一件事上...该网站的文档根目录中的 .htaccess - 所以重写规则应该有效(现在我已经删除了 MultiViews 选项)。但是对这个文件的更改应该是实时的,不需要重新启动 apache(事实上,关闭 MultiViews 是即时的)
标签: apache .htaccess mod-rewrite apache2 rewrite