这是一个非常奇怪的问题,我只希望我能够清楚地解释它。htaccess重写不适用于所有规则
基本上,我们今天做一个客户端站点的一次重大更新,并在需要更新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时,我们得到了404s。某处仍然将媒体映射到media.php - 并忽略重写规则。
奇怪的是 - 文件中的所有其他重写规则工作正常 - 并且其中大约有20个左右。
我们已经跟踪了虚拟主机和其他配置文件,但无法找到对媒体或其他破碎重定向的引用(总共三个) - 所以我们被难倒了。
您是否重新启动了网络服务器? – Gumbo 2009-10-28 09:40:30
是的,我们做到了 - 尽管这通常不会影响目录级别的htaccess(并且它不会) – HorusKol 2009-10-28 10:57:32
但是,在.htaccess文件中使用mod_rewrite时,每个目录路径前缀会从请求URI中删除,因此也需要从模式中删除。所以给定的规则不应该在.htaccess文件中工作。 – Gumbo 2009-10-29 06:38:02