HTTP 狀態鏈檢查器

輸入一個 URL,查看它到達目標的每一跳:每個重新導向狀態碼、每個目標、最終 URL,以及最終回應上的安全回應標頭——由 sysosx 的伺服器追蹤,所以這條鏈是網際網路其他部分所看到的,而不是你的瀏覽器已經快取的內容。

想自動持續監控?用 myeventwatch 免費監控——到期和停機提醒,無需綁卡。

什麼是重新導向鏈

重新導向鏈是瀏覽器或爬蟲在前往你所請求頁面的途中實際造訪的一系列地址。你輸入一個 URL;伺服器回答「不在這裡了,試試這個」;用戶端跟隨跳轉,下一個伺服器可能再給出同樣的回答。每一步都是一跳,每一跳都帶有一個狀態碼,說明這是什麼樣的遷移。只有一跳的鏈是現代網路的正常形態:普通 http 升級到 https,或者裸頂層網域被送到 www。兩三跳的鏈通常意味著兩個不同的系統都發表了意見——一條 CDN 規則加上一條 CMS 規則,或者一條遷移規則疊加在更舊的規則之上。本頁顯示的鏈由 sysosx 的伺服器逐跳追蹤,每一跳在跟隨之前都會重新做安全檢查,最多五跳。

每一跳上的狀態碼是最值得仔細看的部分。301 或 308 表示遷移是永久的:舊地址已經消失,搜尋引擎應把它的排名交給新地址。302 或 307 表示臨時:舊地址可能還會回來,所以排名保持不動,快取也不應固化。303 表示「答案在那邊」,大多出現在表單提交之後。實際中常見的故障是本應永久卻寫成了 302——一條匆忙寫下的遷移規則——它會悄悄流失排名,並在遷移完成很久之後仍讓快取提供舊地址。鏈也會以更平淡的方式斷裂:跳回較早的地址會無限迴圈,跳到不同的主機時會遺失路徑,從 https 跳回 http 則會抵消第一跳剛剛建立的安全性。

如何閱讀結果

結果按順序列出各跳,從你輸入的 URL 開始。一行跳數顯示所請求的地址、返回的狀態,以及——如果是重新導向——它指向的目標。最後一行是實際以內容作答的地址,連同它的狀態、伺服器回應標頭(如果傳送了的話),以及追蹤所用的總時間。在其下方彙總了最終回應上的安全回應標頭:哪些防護性回應標頭存在,哪些缺失。以 4xx 或 5xx 狀態結束的鏈不是重新導向問題,而是目標本身失敗了——鏈仍然能告訴你是如何到達這個失敗的,而修復通常就在那裡。出現「重新導向過多」的結果意味著第五跳仍然指向前方;所顯示的鏈就是證據,修復方法是縮短它,而不是繼續跟隨。

相關工具:當問題是不同地點看到不同地址時,用DNS 傳播檢查;想看全貌——可達性、憑證、到期和記錄一起看——用網站健康檢查;當某一跳落在憑證錯誤上時,用SSL 檢查器。

延伸閱讀:為什麼一個站點從不同地方看不一樣——重新導向鏈、DNS 傳播和中間快取,以及如何判斷到底是哪一個在咬你。

常見問題

這個檢查是從我的瀏覽器執行,還是從伺服器執行?

從伺服器。你的瀏覽器把 URL 傳送給 sysosx,sysosx 的檢查器從自己的網路位置逐跳跟隨每個重新導向去抓取它。這正是關鍵所在:從伺服器追蹤的鏈顯示的是搜尋引擎和訪客的網路所看到的,而不是你的瀏覽器快取已經知道的。請求來自 sysosx 的檢查器,你輸入的 URL 是唯一被傳送的東西。

為什麼起始通訊協定重要?

因為第一跳往往是最重要的一跳。以 http:// 輸入的 URL 會從 http 開始追蹤,所以升級到 https 會顯示為它自己的一跳——這正是審查普通 HTTP 是否真的在重新導向時你想要的。以 https:// 輸入的 URL 從 https 開始追蹤。裸主機名稱預設使用 https。

不同的重新導向狀態是什麼意思?

301 和 308 是永久的:舊地址一去不返,搜尋引擎應把排名轉移給新地址。302 和 307 是臨時的:舊地址可能還會回來。303 表示「去那邊看看」(通常在表單提交之後)。對於站點遷移,你幾乎總是需要 301 或 308;一個本應永久的 302 會悄悄流失排名並讓快取混亂。

多少個重新導向算太多?

檢查器最多跟隨五個。一兩跳的鏈是正常的(http 到 https、頂層網域到 www)。三個或更多通常意味著層層累積:一條 CDN 規則、一條 CMS 規則和一條舊的遷移規則依次觸發。每一跳都要花一次往返和一點排名訊號,超過五跳的鏈會被報告為過多,而不是無限跟隨下去——這麼長的鏈本身就是發現。

為什麼有限速?

每次追蹤都會逐跳向別人的伺服器發出真實請求。為了保持禮貌,每個訪客的新追蹤次數有限(每小時約二十次,另有短時突發額度),結果會快取一小時。快取的結果會如此標註;在 API 呼叫中加上 ?fresh=1 可以重新檢查,同樣受這些限制。