跟踪重定向源

时间:2012-01-30 19:19:43

标签: wordpress .htaccess redirect trace

有没有办法跟踪哪个文件导致重定向?我的网站从非www重定向到带有302重定向的www版本,尽管我在我的htaccess中定义了301重定向。该文件似乎被忽略了。

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。所以看来,文件完全被忽略了。我试图逐个禁用每个插件和主题,然后检查核心文件是否有变化。

有没有办法追踪调用重定向的位置/文件?

  • 更新:

我刚刚发现了一些更多的重定向问题:所有非www网址都被重定向到网站的根目录。 “dreadfactory.de/angebot”被重定向到“www.dreadfactory.de”。这很不寻常,我还没有发现为什么会这样......

3 个答案:

答案 0 :(得分:1)

我建议您在VirtualHost / htaccess中添加此内容。记录mod_rewrite的活动。它有助于调试并使RewriteLogLevel更好地进行调试。

RewriteEngine On
RewriteLog "/path/to/your/rewrite.log"
RewriteLogLevel 3

来自RewriteLogLevel Docs

  

要禁用重写操作的日志记录,只需将Level设置为0.这将禁用所有重写操作日志。   对Level使用较高的值会大大减慢Apache服务器的速度!仅在大于2的级别使用重写日志文件进行调试!

我建议您使用RewriteLogLevel 9。但是在完成调试后请降低级别。

答案 1 :(得分:0)

设置包含脚本

的环境转储目标
<?php
phpinfo(INFO_ENVIRONMENT);

并逐步构建规则,将任何中间体转储到环境标志,您可以使用RewriteRule上的[E=TEST:%1%{HTTP},E=TEST2:whateverparametersorexpressions]收集这些标志,但请记住,模式和规则必须匹配才能将插入的字符串存储到env变量中。然后中断并进行内部重定向到env信息脚本。你会发现当前传递的变量是REDIRECT_ *,而前一个传递是REDIRECT_REDIRECT_ *等。

如果您无法访问重写日志,则需要一些时间来调试基于.htaccess的重写逻辑。

它还可以帮助你发现盲目明显的某个时刻 - 比如你的第一个条件会成功%{HTTP_HOST} != dreadfactory.de(这是更清晰的写作方式。),包括www.dreadfactory.de

还可以使用完整的phpinfo来查找apache配置的位置(例如/ etc / httpd)并执行tar -C etc -czf somewhereyouvegotFTPaccess/httpd.tar.gz httpd然后查看这个以确保您的HSP没有做任何事情来解决问题你。

很抱歉,对于共享托管用户来说,这个问题没有简单的答案。我已经构建了一个VM,我可以在其中获得root访问权限,并为我的测试镜像我的HSP配置 - 即便如此,我仍然偶尔需要达到这种技巧。

答案 2 :(得分:0)

问题解决了。事实证明,问题不是htaccess连接。 DNS条目搞砸了。