閱讀時間 12 分鐘
如何檢查網址轉址,並看懂重新導向鏈
一步步用 TrueURL、curl 與 DevTools 檢查網址轉址,看懂重新導向鏈的每個躍點,並找出及修正重新導向迴圈、過長的重新導向鏈與 301/302 混用等常見問題。
閱讀文章免費重新導向工具
當瀏覽器回報「重新導向次數過多」時,代表網站正讓它不停兜圈子。TrueURL 會一路追蹤重新導向,直到迴圈閉合為止,並列出所有相關的網址。
按 Enter 開始檢查
Cloudflare 邊緣網路一律會驗證憑證,因此這個選項無法略過驗證。憑證問題會顯示在檢查結果中。
隨第一個要求一起傳送,上限 16 KB。除非您另外設定 Content-Type 標頭,否則 JSON 內容會以 application/json 傳送,其他內容則以表單格式傳送。
1 至 50。瀏覽器最多只追蹤 20 次重新導向。
網站可能會對手機、爬蟲和連結預覽機器人採用不同的重新導向。
會隨重新導向鏈中的每個要求一起傳送。
尚未新增自訂標頭。
填入值後才會傳送此標頭。標頭值不會儲存。
追蹤 HTML 網頁中的 <meta http-equiv="refresh"> 標記與 Refresh 標頭。
追蹤網頁指令碼中簡單、無條件的重新導向,例如 location.href = "…"。
設定會儲存在這個瀏覽器中。Cookie、標頭值和 POST 要求主體一律不會儲存。
當網址 A 重新導向至網址 B,而 B 又直接或經由其他躍點重新導向回 A,就形成了重新導向迴圈。瀏覽器大約追蹤 20 次重新導向後就會放棄並顯示錯誤:Chrome 和 Edge 顯示 ERR_TOO_MANY_REDIRECTS,Firefox 顯示 The page isn't redirecting properly(網頁未正確重新導向),Safari 則顯示 Too many redirects occurred(發生太多次重新導向)。搜尋引擎無法將卡在迴圈中的網頁編入索引。
TrueURL 會記錄它要求的每個網址,以及當時使用的要求方法和持有的 Cookie。當某個躍點回到一個先前已在相同狀態下要求過的網址時,這條重新導向鏈就永遠不可能結束,結果中會醒目標示迴圈閉合的那個躍點。
由於 TrueURL 會像瀏覽器一樣保留 Cookie,因此能分辨真正的迴圈和一般的 Cookie 交握:也就是網站先設定 Cookie,再將您導回同一個網址一次。如果每一輪的狀態都會改變,重新導向鏈就會繼續下去,直到達到進階設定中的最大躍點數上限(最多 50)。達到上限的重新導向鏈通常也是無限迴圈,例如每個躍點都會加上一個新的查詢參數。
www,另一條規則(通常位於 CMS 或主機代管控制台中)卻將它移除。Server、Via、CF-Ray 或 X-Powered-By,判斷重新導向是由哪一層送出的:CDN、網頁伺服器,還是應用程式。閱讀時間 12 分鐘
一步步用 TrueURL、curl 與 DevTools 檢查網址轉址,看懂重新導向鏈的每個躍點,並找出及修正重新導向迴圈、過長的重新導向鏈與 301/302 混用等常見問題。
閱讀文章這是 Chrome 在重新導向鏈經過 20 次重新導向仍未結束時顯示的錯誤,幾乎都是迴圈造成的:網站的重新導向規則互相矛盾。在上方檢查該網址,即可看出哪些網址重複出現。
可能。取決於 Cookie、語言、所在地或裝置的迴圈,只會影響處於該情況的訪客。您可以利用進階設定重現:加入該 Cookie、Accept-Language 標頭或行動裝置的 User-Agent,然後再檢查一次。取決於訪客所在地的迴圈則無法重現,因為要求一律來自 Cloudflare 的網路。
這表示該迴圈是由 Cookie 造成的:過期或互相衝突的 Cookie 讓網站不斷把您導來導去。清除 Cookie 會重設您的狀態,但對每個拿到相同 Cookie 的訪客來說,這個錯誤依然存在。請使用進階設定中的「Cookie」欄位,在這裡重現問題。
您的瀏覽器可能已經登入、存有同意 Cookie,或者有 HSTS 項目或快取的重新導向,因而略過了其中一個躍點。TrueURL 一開始沒有任何 Cookie 和記錄,就像第一次造訪的訪客或爬蟲。如果它發現了迴圈,新訪客和爬蟲很可能也會遇到,除非網站對來自資料中心的要求有不同的處理方式。
迴圈代表 TrueURL 回到了先前已在相同狀態下要求過的網址,因此重新導向鏈永遠不會結束。達到最大躍點數則代表它在設定的重新導向次數後停止,但沒有出現完全相同的重複。這條重新導向鏈也許最終會結束,但不論如何,這麼長的重新導向鏈本身就是問題。您可以將最大躍點數提高到 50,看看後續的情況。
會,這是最常見的原因之一。如果 CDN 透過 HTTP 與您的伺服器通訊,而伺服器又強制使用 HTTPS,或者 CDN 和伺服器在 www 與非 www 之間朝相反方向重新導向,它們就會讓每個要求在兩者之間來回反彈。每個躍點的回應標頭會顯示是哪一層做出回應。