2012-01-30 114 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條目被搞亂了。