有没有办法跟踪哪个文件导致重定向?我的网站从非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”。这很不寻常,我还没有发现为什么会这样......
答案 0 :(得分:1)
我建议您在VirtualHost
/ htaccess
中添加此内容。记录mod_rewrite
的活动。它有助于调试并使RewriteLogLevel
更好地进行调试。
RewriteEngine On
RewriteLog "/path/to/your/rewrite.log"
RewriteLogLevel 3
要禁用重写操作的日志记录,只需将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条目搞砸了。