TrueURL
TrueURL

選單

免費重新導向工具

重新導向迴圈檢查

當瀏覽器回報「重新導向次數過多」時,代表網站正讓它不停兜圈子。TrueURL 會一路追蹤重新導向,直到迴圈閉合為止,並列出所有相關的網址。

什麼是重新導向迴圈?

當網址 A 重新導向至網址 B,而 B 又直接或經由其他躍點重新導向回 A,就形成了重新導向迴圈。瀏覽器大約追蹤 20 次重新導向後就會放棄並顯示錯誤:Chrome 和 Edge 顯示 ERR_TOO_MANY_REDIRECTS,Firefox 顯示 The page isn't redirecting properly(網頁未正確重新導向),Safari 則顯示 Too many redirects occurred(發生太多次重新導向)。搜尋引擎無法將卡在迴圈中的網頁編入索引。

TrueURL 如何偵測迴圈

TrueURL 會記錄它要求的每個網址,以及當時使用的要求方法和持有的 Cookie。當某個躍點回到一個先前已在相同狀態下要求過的網址時,這條重新導向鏈就永遠不可能結束,結果中會醒目標示迴圈閉合的那個躍點。

由於 TrueURL 會像瀏覽器一樣保留 Cookie,因此能分辨真正的迴圈和一般的 Cookie 交握:也就是網站先設定 Cookie,再將您導回同一個網址一次。如果每一輪的狀態都會改變,重新導向鏈就會繼續下去,直到達到進階設定中的最大躍點數上限(最多 50)。達到上限的重新導向鏈通常也是無限迴圈,例如每個躍點都會加上一個新的查詢參數。

重新導向迴圈的常見成因

  • 代理伺服器或 CDN 後方的 HTTP 與 HTTPS:CDN 透過 HTTP 連線到您的伺服器(例如 Cloudflare 的「彈性」(Flexible)SSL 模式),伺服器卻將每個 HTTP 要求都重新導向至 HTTPS。瀏覽器於是再次要求 HTTPS,CDN 又再次以 HTTP 擷取,如此反覆不停。請改用「完整(嚴格)」(Full (strict))模式,或只讓其中一層處理 HTTPS 重新導向。
  • 互相衝突的 www 規則:一條規則加上 www,另一條規則(通常位於 CMS 或主機代管控制台中)卻將它移除。
  • 互相衝突的結尾斜線規則:伺服器加上斜線,應用程式卻將它移除。
  • CMS 的網址設定:以 WordPress 為例,WordPress Address(WordPress 位址)或 Site Address(網站位址)與網站實際使用的網域或通訊協定不符。
  • 登入、同意與地區重新導向:網頁將沒有特定 Cookie 的訪客導向登入、同意或國家/地區選擇頁面,該頁面再將訪客導回,但 Cookie 卻始終沒有設定或未被接受。

如何修正重新導向迴圈

  1. 在這裡檢查網址,記下哪些網址重複出現,以及是哪個躍點把您導回去。
  2. 查看該躍點的回應標頭,例如 Server、Via、CF-Ray 或 X-Powered-By,判斷重新導向是由哪一層送出的:CDN、網頁伺服器,還是應用程式。
  3. 修正或停用那一條規則,然後再檢查一次。一次只修改一個層級。
  4. 在瀏覽器中測試之前,先清除該網站的快取和 Cookie。快取的 301 和過期的 Cookie,可能會讓迴圈在修正後依然存在。

相關指南

  • 閱讀時間 12 分鐘

    如何檢查網址轉址,並看懂重新導向鏈

    一步步用 TrueURL、curl 與 DevTools 檢查網址轉址,看懂重新導向鏈的每個躍點,並找出及修正重新導向迴圈、過長的重新導向鏈與 301/302 混用等常見問題。

    閱讀文章

常見問題

ERR_TOO_MANY_REDIRECTS 是什麼意思?

這是 Chrome 在重新導向鏈經過 20 次重新導向仍未結束時顯示的錯誤,幾乎都是迴圈造成的:網站的重新導向規則互相矛盾。在上方檢查該網址,即可看出哪些網址重複出現。

轉址迴圈可能只影響部分訪客嗎?

可能。取決於 Cookie、語言、所在地或裝置的迴圈,只會影響處於該情況的訪客。您可以利用進階設定重現:加入該 Cookie、Accept-Language 標頭或行動裝置的 User-Agent,然後再檢查一次。取決於訪客所在地的迴圈則無法重現,因為要求一律來自 Cloudflare 的網路。

為什麼清除 Cookie 就能解決瀏覽器中的迴圈?

這表示該迴圈是由 Cookie 造成的:過期或互相衝突的 Cookie 讓網站不斷把您導來導去。清除 Cookie 會重設您的狀態,但對每個拿到相同 Cookie 的訪客來說,這個錯誤依然存在。請使用進階設定中的「Cookie」欄位,在這裡重現問題。

為什麼網頁在我的瀏覽器中正常,TrueURL 卻發現迴圈?

您的瀏覽器可能已經登入、存有同意 Cookie,或者有 HSTS 項目或快取的重新導向,因而略過了其中一個躍點。TrueURL 一開始沒有任何 Cookie 和記錄,就像第一次造訪的訪客或爬蟲。如果它發現了迴圈,新訪客和爬蟲很可能也會遇到,除非網站對來自資料中心的要求有不同的處理方式。

迴圈和達到最大躍點數有什麼不同?

迴圈代表 TrueURL 回到了先前已在相同狀態下要求過的網址,因此重新導向鏈永遠不會結束。達到最大躍點數則代表它在設定的重新導向次數後停止,但沒有出現完全相同的重複。這條重新導向鏈也許最終會結束,但不論如何,這麼長的重新導向鏈本身就是問題。您可以將最大躍點數提高到 50,看看後續的情況。

CDN 會造成轉址迴圈嗎?

會,這是最常見的原因之一。如果 CDN 透過 HTTP 與您的伺服器通訊,而伺服器又強制使用 HTTPS,或者 CDN 和伺服器在 www 與非 www 之間朝相反方向重新導向,它們就會讓每個要求在兩者之間來回反彈。每個躍點的回應標頭會顯示是哪一層做出回應。