【发布时间】:2010-10-13 13:58:43
【问题描述】:
我之前在几个目录中使用过 mod_rewrite(很少),通过为该目录放入一个 .htaccess 文件没有问题,现在它可以在那里工作。但是当我尝试在我的顶级目录中使用它时,什么也没有发生!?!?!但是那个 .htaccess 文件(第一级)在其他方面工作正常。我有 Redirect 301 和其他各种东西,但没有打开 mod_rewrite。我正在运行加载了 mod_rewrite 和 mod_proxy 的 Apache 2.0.63。
作为一个测试用例,我设置了以下 4 个文件(fileA、html、fileB.html、fileC.html、fileD.html)并将它们放在 /test 目录中。每个文件都包含相应的字母(例如 AAAA、BBBB),因此我可以肯定地识别它们。在 /test 目录中,我用
创建了一个 .htaccess 文件Redirect 301 /test/fileA.html http://www.xyz.com/test/fileB.html
RewriteEngine on
RewriteRule ^fileC\.html$ fileD.html
一切都按预期工作:即使在请求 A 或 C 时,您也只能看到 fileB.html 和 fileD.html。
然后我将这些文件复制到根 html 目录并添加到那里的 .htaccess 中:
Options +FollowSymLinks (this was already there)
Redirect 301 /fileA.html http://www.xyz.com/fileB.html
RewriteEngine on
RewriteRule ^fileC\.html$ fileD.html
.htaccess 中没有关于这些文件的其他命令。现在您可以看到 fileB.html 和 fileD.html,但也可以看到 fileC.html 而不是 fileA.html!!!所以 mod_rewrite 规则在这里不工作,重定向工作。
我在网上搜索了关于这个的想法,但徒劳无功。有人知道我做错了什么吗?
【问题讨论】:
-
您确定这不是缓存问题,因为您的浏览器只是向您显示它已缓存的 fileC.html 版本并且根本没有探测服务器吗?
-
是的,我清除了缓存并重新获取以确保。
-
您说“.htaccess 中没有关于这些文件的其他命令”,但这是否意味着那里实际上还有其他指令?还是真的只是你展示的那样?
-
原来我仍然在其他似乎导致问题的 URL(实际上是我想要的 URL)上激活了一些 mod_rewrite。请看下面我的回答。感谢您将我推向正确的方向。
标签: mod-rewrite apache2