我之前在几个目录中使用了mod_rewrite(sparingly),没有任何问题,只需为该目录放入一个.htaccess文件,它就可以在那里工作了。但是当我尝试在我的顶级目录中使用它时,没有任何反应!?!?!但是.htaccess文件(顶级一级)工作正常。我有重定向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规则在这里没有工作,Redirect IS工作。
我在网上搜索这个想法是徒劳的。任何人都知道我做错了什么?
答案 0 :(得分:0)
看起来这个问题,至少在我的测试用例中,在我确实有的.htaccess文件中有所改进。 RewriteEngine on RewriteCond%{HTTP_USER_AGENT}!FeedBurner 接下来是我真正想要的一些RewriteRules和RewriteEngine - 最后一次是我误导(?)清除RewriteCond的努力,以免影响未来可能的RewriteRules。另外我发现我最初遇到了一些问题,因为我在模式匹配中包含了初始的“/”,这显然是不正确的。
我评论了所有这些以及我的测试用例和我真正想要的东西,开始按预期工作。从那时开始玩弄让我相信RewriteEngine是真正的罪魁祸首。无论如何,现在一切都按预期工作了。谢谢你把我推向正确的方向,希望这有助于其他人。