搜霸 SEOBARSEO / GEO 技術專欄HTTP 狀態碼與 SEO:301、404、410、503 分別代表什麼

HTTP 狀態碼與 SEO:301、404、410、503 分別代表什麼

2026年8月31日技術 SEO· 王豪勳
淺色底示意圖:由上而下四個代表狀態碼的方框,分別以綠色、灰色與橘色標示,右側一條線指向代表搜尋引擎索引的方框

TL;DR

  • 狀態碼是伺服器對「這個網址現在是什麼狀態」的回答,跟頁面上印了什麼字無關
  • 回 200 不保證被索引;回 200 卻顯示錯誤訊息會被判定為 soft 404,這是最常見也最難自己發現的問題
  • 301 是強訊號、302 是弱訊號,兩者的差別不是「移轉」與「不移轉」這麼絕對
  • 404 與 410 被同等對待——Google 文件寫明除 429 外所有 4xx 處理方式相同,中文圈常見的「410 移除比較快」與現行文件不符
  • 4xx 不會拖慢抓取,5xx 會;持續回 5xx 的網址會被移出索引

目錄

狀態碼是伺服器的回答不是頁面的內容
回了 200 不代表會被索引
301 是強訊號 302 是弱訊號
404 與 410 其實被同等對待
4xx 不會拖慢抓取 5xx 會
網站維護時該回 503
怎麼一次看完整站的狀態碼

引言

大部分人對狀態碼的印象停在 404——那個「找不到網頁」的畫面。真正影響搜尋表現的,反而是那些不會顯示任何錯誤畫面的狀況:伺服器回了 200 說一切正常,頁面上卻寫著「查無資料」。

這篇不做狀態碼一覽表,那種內容 MDN 寫得比誰都完整。這裡只談一件事:當 Google 的爬蟲收到某個狀態碼,它接下來會做什麼。內容全部對照 Google Search Central 的 HTTP 狀態碼說明,其中有兩處與中文圈流傳的說法不同,會特別標出來。

狀態碼是伺服器的回答不是頁面的內容

你打開一個網址,看到「很抱歉,找不到這個頁面」。這是畫面。同一時間伺服器回了一個三位數的號碼給瀏覽器,那是狀態碼。兩者可以完全不一致——畫面寫著找不到,狀態碼卻是 200(成功)。

人只看得到畫面,爬蟲主要看狀態碼。這個落差是後面所有問題的根源。

想看狀態碼,用瀏覽器的開發者工具(F12 → Network 分頁 → 點第一筆請求 → 看 Status),或直接用指令:

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/some-page

回了 200 不代表會被索引

Google 文件對 2xx 的措辭很保守:

an HTTP 2xx (success) status code doesn't guarantee indexing

回 200 只代表「內容有交出去」,接下來要不要收錄是另一套判斷。這一點常被誤解成「只要頁面打得開就會被收錄」。

同一段接著寫:

If the content suggests an error for Google Search, an empty page or an error message, Search Console will show a soft 404 error

也就是說,回 200 但內容看起來像錯誤頁、空頁面或錯誤訊息,會被判定為 soft 404。

這是實務上最常見、也最難靠自己發現的問題。典型情況:程式查不到資料時沒有回 404,而是回 200 加上一句「查無資料」。使用者看到的是一個空頁面,Google 看到的是一個宣稱成功的網址。網站可能因此累積大量沒有內容的網址被送進索引流程,而站主完全沒有察覺——因為每一頁都「打得開」。

Search Console 的「網頁索引」報表有專門的 soft 404 分類,這是唯一能一次看清楚的地方。

301 是強訊號 302 是弱訊號

中文文章常把這兩者寫成「301 移轉權重、302 不移轉」。Google 文件的實際措辭比這個細緻:

301 (moved permanently) — Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.

302 (found) — By default, Google's crawlers follow the redirect, and Google systems use the redirect as a weak signal that the redirect target should be processed.

差別是強弱,不是有無。302 不是完全沒有作用,它是一個比較弱的建議——這跟前一篇談 canonical 時的邏輯一致:這些都是訊號,不是開關。

結論仍然一樣:確定不會回頭就用 301。用 302 表達永久搬遷,等於用一個弱訊號去說一件確定的事,Google 沒有理由完全採信。網站換域名、網址結構調整這類情況,用錯狀態碼的代價是搬遷遲遲無法完成,而且從瀏覽器上完全看不出來——兩種狀態碼的畫面表現一模一樣。

404 與 410 其實被同等對待

這是本文與常見說法差異最大的一點。

中文 SEO 內容普遍會說「確定永久移除用 410,Google 會處理得比 404 快」。Google 現行文件的說法是:

All 4xx errors, except 429, are treated the same: Google crawlers inform the next processing system that the content doesn't exist.

除了 429(請求過多)之外,所有 4xx 的處理方式相同。文件把 400、401、403、404、410、411 列在同一個處理邏輯下,沒有給 410 任何特別待遇。

同一段還寫了 4xx 的後續行為:已被索引的網址會從索引移除,新遇到的 404 頁面不會被處理,抓取頻率逐漸降低。

所以「該用 404 還是 410」在搜尋層面上,依現行文件並沒有實質差別。410 的語意仍然比較精確(明確表示已永久移除),如果你的系統分得出來,用 410 沒有壞處——只是不必期待它換來更快的移除。

一個要避開的做法文件也直接點名了:

Don't use 401 and 403 status codes for limiting the crawl rate.

想控制抓取頻率,401 和 403 不是工具。

4xx 不會拖慢抓取 5xx 會

4xx 與 5xx 對抓取頻率的影響完全相反。

The 4xx status codes, except 429, have no effect on crawl rate.

網站上有一批 404,不會讓 Google 減少來爬你的網站。壞掉的連結該修,但它不是抓取預算的災難。

5xx 這一側:

5xx and 429 server errors prompt Google's crawlers to temporarily slow down with crawling. ... The decrease in crawl rate is proportionate to the number of individual URLs that are returning a server error. For Google Search, Google's indexing pipeline removes from the index URLs that persistently return a server error.

抓取會變慢,幅度與出錯網址的數量成正比,而持續出錯的網址會被移出索引

換句話說,一次短暫的伺服器不穩不會怎麼樣,但長期的間歇性 5xx 會同時侵蝕抓取頻率與既有收錄。這也是為什麼主機穩定性算是 SEO 的一部分——它不是加分項,是不出事才看不見的底線。

網站維護時該回 503

承上,維護期間如果整站回 5xx,處理方式跟伺服器壞掉是一樣的。

正確做法是回 503(service unavailable),語意是「暫時無法提供服務,稍後再來」。這是一個明確表達「暫時」的狀態碼,與 500(伺服器內部錯誤)表達的「出事了」不同。

Google 對暫停營運的網站有專門的說明文件,值得在計畫性維護之前看一次。要注意的是,503 是給短期維護用的;長時間持續回 503,最終仍會走上「持續伺服器錯誤」的處理路徑。

怎麼一次看完整站的狀態碼

單一網址用 curl 就夠,但要看全站需要別的方法。

看單一網址與它的轉址鏈

curl -sIL https://example.com/old-page | grep -iE "^HTTP|^location"

-L 會跟著轉址走完,所以你會看到完整的鏈。要留意的是鏈的長度——A 轉 B、B 再轉 C 是常見的歷史遺留,每多一層就多一次判斷,能壓成一次就壓成一次。

看全站:Search Console 的「網頁索引」報表會把未收錄的原因分類列出,其中包含「找不到(404)」「伺服器錯誤(5xx)」「soft 404」「重新導向錯誤」。這是唯一能看到 Google 實際遇到什麼的地方——本機測試永遠測不出爬蟲在別的時間點遇到的狀況。

狀態碼正確不會讓排名變好。它屬於那種做對了沒人會注意、做錯了會慢慢流失的基礎。soft 404 讓空頁面進了索引、302 讓搬遷卡住、間歇 5xx 讓抓取變慢——這些都不會在任何報表上顯示成「排名下降的原因」,但它們確實在下面拖著。

HTTP 狀態碼技術 SEO301 轉址soft 404

常見問題

Q

回 200 為什麼還是沒被收錄?

Google 文件寫明「an HTTP 2xx status code doesn't guarantee indexing」——回 200 只代表內容有交出去,要不要收錄是另一套判斷。若頁面回 200 但內容是空的或顯示錯誤訊息,會被判定為 soft 404,可在 Search Console 的「網頁索引」報表看到。

Q

302 真的完全不會移轉權重嗎?

沒有那麼絕對。Google 文件的措辭是 301 被視為 strong signal(強訊號)、302 是 weak signal(弱訊號),差別在強弱不在有無。但實務結論不變:確定不會回頭就用 301,用弱訊號去表達永久搬遷會讓搬遷遲遲無法完成。

Q

永久移除頁面該用 404 還是 410?

依 Google 現行文件,除 429 外所有 4xx 的處理方式相同,410 沒有比 404 更快。中文圈常見的「410 移除比較快」與文件不符。410 的語意較精確,系統分得出來就用,但不必期待它換來更快的移除。

Q

網站上有很多 404 會影響 SEO 嗎?

不會拖慢抓取。文件寫明「The 4xx status codes, except 429, have no effect on crawl rate」。壞掉的連結仍該修,但它不是抓取預算的災難。真正會拖慢抓取的是 5xx。

Q

網站要維護時應該怎麼做?

回 503(service unavailable),語意是暫時無法提供服務。直接關站或回 500 會被當成伺服器故障處理——持續回 5xx 的網址會被移出索引,抓取頻率也會依出錯網址數量成比例下降。503 適用於短期維護,長時間持續回 503 仍會走上同樣的路徑。

技術 SEO 分類其他文章

繼續閱讀同主題的延伸內容

canonical 是什麼?重複網址的判斷與常見設錯
canonical(標準網址)是建議不是命令——Google 文件寫明這是 hint 而非 rule。本文說明重複網址怎麼產生、自我參照為什麼每頁都該有、四種最常見的設錯,以及它與 301 轉址的分工…
robots.txt 怎麼寫?語法、常見錯誤與 AI 爬蟲
robots.txt 的語法、規則比對方式與六個常見錯誤。包含最容易誤解的一點:它擋的是爬取,不是收錄;以及實測台灣 21 個網站的 robots.txt,看誰在管 AI 爬蟲、誰完全沒設。
sitemap 是什麼?產生、提交與 Google 實際會讀的欄位
XML sitemap 怎麼產生、怎麼提交,以及 sitemap.xml 裡哪些欄位 Google 根本不會讀。包含 ping 端點停用後剩下的三種提交方式,以及用 xmllint 自行驗證格式時,哪…

留言討論

只有會員能留言(防止垃圾訊息),留言顯示於此頁。

載入中...
← 返回SEO / GEO 技術專欄