2012-01-30 115 views
-1

有没有办法跟踪哪个文件导致重定向?尽管我在我的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”。这是很不寻常的,我还没有发现为什么会发生这种情况...

回答

1

我建议你在VirtualHost/htaccess中加上这个。记录mod_rewrite的活动。这对于调试更有帮助,并且更高的RewriteLogLevel更适合调试。

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

RewriteLogLevel Docs

要禁用改写简单的设置级别为0。这样的行为的日志记录禁用所有重写操作日志。 使用较高的Level值会显着降低Apache服务器的速度!仅在调试时使用大于2的级别的重写日志文件!

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

+0

它不能处理我的.htaccess文件。该服务器日志说:“RewriteLog不允许在这里” – 2012-01-30 23:02:10

+1

马文,您不能使用共享主机服务上的日志记录。提供者不会启用它,因为它会影响其他人的性能:( – TerryE 2012-01-31 00:32:42

0

设置一个环境现状倾销包含脚本

<?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配置 - 即便如此,我仍然偶尔需要采取这种方法。

0

问题已解决。原来,问题不是htaccess连接。 DNS条目被搞乱了。