HTTP 狀態碼對 SEO 的實際意義
一份實用指南,說明會影響爬取、索引、重新導向與移除索引的回應碼——但不把每個狀態碼都視為排名危機。
目錄
HTTP 狀態碼是 SEO 建議中常被講得有點過度戲劇化的主題之一。單一 404 會被說成「權重流失」。一個重新導向會被說成「連結權重外漏」。一次 500 會變成緊急事件,即使它只是在部署期間持續了六分鐘。
比較冷靜的說法是:HTTP 狀態碼是指令與訊號。它們告訴瀏覽器、機器人、快取與其他用戶端,當它們請求某個 URL 時發生了什麼事。搜尋引擎會使用這些回應來判斷是否要爬取、索引、保留、替換或移除某個頁面。
但並非每個狀態碼都有相同的 SEO 權重。有些很日常。有些只有在大規模發生時才是問題。少數則值得立即處理。
狀態碼不是 SEO 的全部故事
狀態碼只是 HTTP 回應的一部分。搜尋引擎也會檢視:
- 重新導向後的最終 URL
- canonical 標籤
- robots 指令
- 頁面內容
- 內部連結
- sitemap 訊號
- 歷史爬取行為
- 伺服器長期可靠性
這表示「頁面回傳 200」不等於「頁面可以被索引」。某個 URL 可以回傳 200,但仍然因為 noindex 被阻擋、被 canonical 到其他地方,或因內容稀薄或空白而被視為 soft 404。
同樣地,404 並不一定不好。被刪除的頁面通常應該回傳 404 或 410。SEO 問題不在於缺頁存在,而在於重要頁面回傳了錯誤的狀態碼,或網站送出了彼此矛盾的訊號。
如果你在正式環境中除錯,不要只依賴瀏覽器顯示的畫面。請檢查實際的回應鏈。原始標頭檢查、命令列請求,或重新導向追蹤,都會比可見頁面提供更多資訊。我們在一組用於正式環境中除錯重新導向與 HTTP 標頭的小工具中整理了一個實用流程。
200 OK:可被索引,但不自動代表有價值
200 OK 回應表示請求成功,且伺服器回傳了內容。對 SEO 來說,這是你希望被爬取並可能被索引的頁面所應有的正常回應。
但 200 並不保證會被索引。如果頁面重複、品質低、受到頁面層級指令阻擋,或無法透過連結被發現,搜尋引擎仍可能選擇不索引它。
200 回應最常見的 SEO 錯誤,是把它用在並不是真正頁面的內容上:
- 空白的搜尋結果頁
- 顯示「抱歉,無法供應」文字的已刪除產品頁
- 沒有實質內容的地點頁
- 只渲染出外殼的破損模板
- 應該被移除或重新導向的過期刊登頁
這些可能會變成 soft 404。soft 404 指的是伺服器說「OK」,但內容卻告訴爬蟲「這裡沒有有用的東西」。搜尋引擎仍可能把該 URL 當成缺頁處理。
一個好規則是:如果人類會說「這個頁面已不存在」,伺服器大概就不應該說 200。
301 與 308:永久重新導向
301 Moved Permanently 與 308 Permanent Redirect 告訴用戶端某個 URL 已永久移動。對 SEO 來說,當頁面有明確替代頁時,這些是正確的工具:
- HTTP 到 HTTPS 遷移
- 舊 slug 到新 slug
- 合併文章到更強的文章
- 停產產品到相近的後繼產品
- 尾斜線或 canonical 主機正規化
搜尋引擎通常會透過永久重新導向轉移 canonicalization 訊號。用白話說:如果你把舊 URL 重新導向到正確的新 URL,搜尋引擎可以整合許多與舊頁面相關的訊號。
風險不在於 301 本身有害。風險在於對應關係做得不好。
不良的重新導向模式包括:
- 將每個舊 URL 都重新導向到首頁
- 將已刪除頁面重新導向到只有模糊相關的分類頁
- 建立像 A → B → C → D 這樣的鏈
- 重新導向到被阻擋、noindexed,或 canonical 到其他地方的 URL
- 行動版與桌面版重新導向不一致
永久重新導向應該回答一個問題:「這個 URL 目前最好的等價頁面是什麼?」如果沒有等價頁,404 或 410 可能更誠實。
302 與 307:暫時重新導向
302 Found 與 307 Temporary Redirect 表示移動是暫時的。原始 URL 預期長期仍會是主要 URL。
請將暫時重新導向用於真正暫時的情況:
- 短期活動路由
- 不應取代 canonical URL 的地理位置導向或 A/B 測試
- 暫時維護替代頁
- 經常變動的庫存或供應狀態流程
對 SEO 來說,主要問題是模糊性。如果一個「暫時」重新導向持續存在數月或數年,搜尋引擎最後可能仍會把目的地視為 canonical。但你不應該依賴這種解讀。
如果移動是永久的,請使用永久重新導向。如果是暫時的,請使用暫時重新導向。無聊的答案就是正確答案。
304 Not Modified:有用,但不是排名捷徑
304 Not Modified 是 HTTP 快取的一部分。它告訴用戶端,資源自從用戶端已擁有的版本之後就沒有變更。
這個狀態碼有助於爬取效率與效能衛生。它可以減少不必要的資料傳輸,並降低重複請求的成本。但它不是簡化意義上的直接排名因素。
把 304 視為基礎架構品質。它幫助用戶端與爬蟲更有效率地與你的網站互動。它不會把薄弱內容變成強內容。
404 Not Found:頁面消失時是正常情況
404 Not Found 表示伺服器找不到請求的資源。這並不自動是 SEO 災難。
404 適用於以下情況:
- 某個頁面已移除且沒有替代頁
- 不良外部連結指向不存在的 URL
- 使用者輸入錯誤的 URL
- 舊測試或 staging URL 原本就不該存在
搜尋引擎最終會將持續回傳 404 的 URL 從索引中移除。這通常正是你想要的結果。
當 404 影響重要 URL 時,你應該修正它們:
- 具有有價值反向連結的頁面
- 獲得實質流量的 URL
- 在遷移期間被意外移除的重要頁面
- 指向缺頁的內部連結
- 回傳 404 的 sitemap URL
不要把每個 404 都重新導向到首頁。這會讓使用者與搜尋引擎感到困惑。如果有相關替代頁,請重新導向。若沒有,請回傳 404,並為人類使用者提供有用的錯誤頁面。
410 Gone:比 404 更強,但要謹慎使用
410 Gone 表示資源已被有意移除,且不預期會回來。
對 SEO 來說,當你想更明確地移除 URL 時,410 可能很有用:
- 過期的法律頁面
- 已移除的使用者個人檔案
- 已刪除的垃圾內容頁
- 沒有替代頁的過時登陸頁
搜尋引擎可能會把 410 視為比 404 更強的移除訊號。實務上的差異通常是速度,而不是結果。持續的 404 與 410 回應都可能導致移除索引。
當你確定頁面已永久消失時,使用 410。如果頁面可能回來,404 或暫時處理方式可能更安全。
401、403 與存取被阻擋
401 Unauthorized 表示需要驗證。403 Forbidden 表示伺服器理解了請求,但拒絕存取。
對 SEO 來說,這些狀態碼通常會阻止受保護內容被正常爬取與索引。這對私人儀表板、帳戶區域、staging 系統,以及不應公開被索引的付費內容而言是合理的。
問題會出現在公開頁面因以下原因意外對爬蟲回傳 401 或 403 時:
- 機器人防護規則
- 防火牆設定錯誤
- 國家/地區封鎖
- CDN 規則
- 過期的驗證假設
- staging 限制被帶入正式環境
一個你登入後可以正常使用的頁面,對爬蟲可能無法正常運作。務必以未驗證的用戶端身分測試。
429 Too Many Requests:有代價的爬取控制
429 Too Many Requests 告訴用戶端它們受到速率限制。當機器人確實壓垮你的基礎架構時,這可能是合適的。
然而,隨意使用 429 可能會降低爬取活動。如果搜尋引擎反覆遇到速率限制,可能會放慢請求速度。這會延遲新內容或更新內容的發現。
如果你需要速率限制,請精準處理。避免意外阻擋主要搜尋爬蟲。使用伺服器日誌區分激進的抓取與合法爬取。如果可能,回傳 Retry-After 標頭,讓行為良好的用戶端知道何時再回來。
500、502、503 與 504:可靠性訊號
5xx 系列表示伺服器無法完成有效請求。
常見例子包括:
500 Internal Server Error502 Bad Gateway503 Service Unavailable504 Gateway Timeout
偶爾出現 5xx 回應是會發生的。短暫的部署問題通常不是災難。持續性的 5xx 錯誤則不同。它們會告訴爬蟲你的網站不可靠;如果搜尋引擎反覆無法擷取受影響頁面,可能會降低爬取頻率,或暫時移除這些頁面。
503 Service Unavailable 是計畫性維護的正確狀態碼,尤其搭配 Retry-After 標頭時。它表示:「這是暫時的;稍後再回來。」為維護頁回傳 200 更糟,因為爬蟲可能會把維護內容視為頁面內容。
如果停機影響重要 URL,請監控復原情況。確保原始頁面再次回傳 200,而不是快取的錯誤頁、重新導向迴圈,或暫時維護模板。
重新導向鏈與迴圈值得特別注意
重新導向很正常。重新導向鏈則是可以避免的債務。
從舊 URL 到新 URL 的簡單重新導向沒有問題。五次重新導向的鏈會增加延遲、浪費爬取預算,並創造更多讓請求失敗的位置。迴圈更糟:用戶端永遠到不了最終頁面。
對 SEO 遷移而言,請保留重新導向對照表,並在上線前測試。每個退役 URL 理想上都應該在一次跳轉內抵達最終目的地。上線後,抽樣測試舊 URL、高流量 URL,以及反向連結較多的 URL。
這也是效能與 SEO 重疊的地方。重新導向會延後真正頁面載入的開始。如果你在檢視爬取能力的同時也評估使用者體驗,不恐慌地閱讀 Lighthouse 報告可以協助你把嚴重載入問題與吵雜的診斷訊息分開。
實務優先順序
如果你正在稽核狀態碼,不要把每個警告都同等看待。從這裡開始:
- 重要 URL 回傳 5xx — 先修復伺服器可靠性。
- 可索引頁面回傳錯誤狀態 — 恢復預期的 200 回應。
- 重新導向鏈與迴圈 — 簡化為一次跳轉的重新導向。
- sitemap URL 回傳非 200 回應 — 保持 sitemap 乾淨。
- 指向 404 的內部連結 — 修復導覽與內容連結。
- soft 404 模式 — 停止對空白或已刪除頁面回傳 200。
- 意外阻擋爬蟲 — 調查非預期的 401、403 與 429 回應。
目標不是建立一個零 404 的網站。那不切實際,也常常沒有必要。目標是讓每個 URL 都給出真實且一致的回應。
<!-- tool-cta:start -->
💡 試試這個: 使用 Redirect Checker 檢查你的 URL 實際返回哪些狀態碼,它會顯示爬蟲看到的完整鏈路。
<!-- tool-cta:end -->
選擇正確狀態碼的簡單規則
有疑問時,選擇符合使用者所見事實的狀態碼:
- 頁面存在且應可使用:
200 - 頁面已永久移動:
301或308 - 頁面已暫時移動:
302或307 - 頁面已不存在且沒有替代頁:
404 - 頁面被有意永久移除:
410 - 頁面暫時無法使用:
503 - 請求被阻擋或屬於私有內容:
401或403
搜尋引擎很擅長處理一般網路上的混亂。真正造成 SEO 麻煩的是大規模的不一致:永久移動卻標成暫時、已刪除頁面假裝有效、伺服器錯誤懸而未決,以及自上次遷移後就沒人測試過的重新導向邏輯。
HTTP 狀態碼不是神奇的 SEO 操縱桿。它們是基本的 Web 語意。誠實使用它們,大多數 SEO 好處自然會隨之而來。