2009-12-24 59 views
1

我看到奇怪的重定向行爲與具有編碼字符的URL。例如,以下兩個URL僅在第一編碼字符中的「e/E」的情況(即,「%e2」相對於「%E2」)不同。爲什麼在我編碼的URL中大寫字符會導致重定向(和GWT重定向錯誤)?

URL 1http://youlookfab.com/welookfab/topic/your-favourite-80%e2%80%99s-music-bands

  • 「200 OK」 HTTP狀態,頁加載罰款

URL 2http://youlookfab.com/welookfab/topic/your-favourite-80%E2%80%99s-music-bands

  • 導致發現了一個「302 「重定向

  • 在瀏覽器中
  • ,將頁面重定向到正確的網址以上(小寫字母「E」)

  • 使用web-sniffer.net,內容長度爲零

我最初開始尋找因爲Google網站管理員工具在一串具有URL編碼字符的網頁上顯示抓取錯誤(「重定向錯誤」,具體而言)。雖然我的站點地圖文件以小寫字母指定這些字符,但GWT以大寫形式顯示它們。

我在.htaccess中看不到任何理由使小寫URL編碼字符重定向爲大寫。該網站基於bbPress,而且我也沒有看到bbPress代碼中有任何理由會發生這種情況。

mod_rewrite可能會做些奇怪的事情嗎?我知道在過去URL編碼的字符被錯誤地處理了一個錯誤。

你有任何洞察力將不勝感激。

[這是一個集成的bbPress/WPMU安裝運行LAMP,託管的MEDIATEMPLE(DV)的服務器上]

回答

1

挖後更深我發現重定向實際上內部的bbPress,其檢測在大寫六角發生傳入的網址並將其視爲與「正確」永久鏈接(具有小寫十六進制)的差異。

我有一個更詳細一點用一個簡單的bbPress插件來解決這一問題寫成這樣了,一起在http://theblogeasy.com/2009/12/26/bbpress-and-encoded-urls-with-uppercase-hex/

關於谷歌抓取錯誤......我的理論是,這是當履帶引起(將編碼的URL轉換爲大寫十六進制)和bbPress(將它們重定向到十六進制小寫)進入無限循環。抓取工具可能會在重複獲取相同的URL並檢測到錯誤時檢測到這種情況。