跟踪重定向源
有没有办法跟踪哪个文件导致重定向?尽管我在我的htaccess中定义了301重定向,但我的网站使用302重定向从非www重定向到www版本。该文件似乎被忽略。跟踪重定向源
RewriteEngine On
RewriteCond %{HTTP_HOST} ^dreadfactory\.de$ [NC]
RewriteRule ^(.*)$ http://www.dreadfactory.de/$1 [R=301,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
即使我改变规则以一个com结尾,我仍然重定向到www.dreadfactory.de。所以看起来,该文件被完全忽略。我试图逐个禁用每个插件和主题,并检查了核心文件的更改。
有没有什么方法可以追踪重定向被调用的位置/文件?
- UPDATE:
我刚刚发现多一些重定向问题:所有非www网址被重定向到网站的根。 “dreadfactory.de/angebot”被重定向到“www.dreadfactory.de”。这是很不寻常的,我还没有发现为什么会发生这种情况...
我建议你在VirtualHost
/htaccess
中加上这个。记录mod_rewrite
的活动。这对于调试更有帮助,并且更高的RewriteLogLevel
更适合调试。
RewriteEngine On
RewriteLog "/path/to/your/rewrite.log"
RewriteLogLevel 3
要禁用改写简单的设置级别为0。这样的行为的日志记录禁用所有重写操作日志。 使用较高的Level值会显着降低Apache服务器的速度!仅在调试时使用大于2的级别的重写日志文件!
我建议你使用RewriteLogLevel 9
。但是在完成调试之后,请降低级别。
设置一个环境现状倾销包含脚本
<?php
phpinfo(INFO_ENVIRONMENT);
,并建立起自己的规则,一步一步倾销的中间产物对环境的标志,你可以收集关于重写规则使用[E=TEST:%1%{HTTP},E=TEST2:whateverparametersorexpressions]
目标,但请记住,模式和规则必须匹配才能将插入的字符串存储到env变量。然后中断并做一个内部重定向到env info脚本。你会发现当前传递的变量在REDIRECT_ *中,而前一次传递在REDIRECT_REDIRECT_ *等。
它需要一些习惯,但它是调试基于.htaccess的rewrtie逻辑的唯一方法,如果你不想无法访问重写日志。
它也将帮助你发现某个盲目的明显 - 如果你的第一个条件将成功,如果%{HTTP_HOST} != dreadfactory.de
(这是更清晰的写作方式),包括www.dreadfactory.de
。
同样使用一个完整的phpinfo来找出apache配置的位置(比如/ etc/httpd)并执行一个tar -C etc -czf somewhereyouvegotFTPaccess/httpd.tar.gz httpd
然后检查这个以确保你的HSP没有为你做任何事情。
对不起,但这个共享托管用户没有简单的答案。我已经构建了一个虚拟机,我拥有root访问权限,并为我的测试镜像了我的HSP配置 - 即便如此,我仍然偶尔需要采取这种方法。
问题已解决。原来,问题不是htaccess连接。 DNS条目被搞乱了。
它不能处理我的.htaccess文件。该服务器日志说:“RewriteLog不允许在这里” – 2012-01-30 23:02:10
马文,您不能使用共享主机服务上的日志记录。提供者不会启用它,因为它会影响其他人的性能:( – TerryE 2012-01-31 00:32:42