網站收錄

狀態碼與收錄:301、302、404、410、503 分別该怎么用

狀態碼是蜘蛛判断頁面狀態的第一手信号。301、302、404、410、503 分別對應不同的處理路径,用错會让该登出的頁面留在索引里,该保留的地址被誤判為失效。本文梳理常见狀態碼對抓取和收錄的實际影响,以及刪除、改版、临时维護时的選擇顺序。

網站收錄

狀態碼與收錄:301、302、404、410、503 分別该怎么用

蜘蛛每次抓取一個 URL,服務器返回的狀態碼就是它對頁面狀態的第一手判断。同一個頁面,返回 200 還是 404,返回 301 還是 302,後續的處理路径完全不同。很多收錄問题追根溯源,不是内容质量的問题,而是狀態碼用错了。

狀態碼和收錄是两件事,但先有關联

抓取和收錄不是一回事:蜘蛛能抓到,不代表會收錄。但狀態碼决定了蜘蛛下一步要不要繼續抓、要不要保留已有索引。可以粗略理解為,狀態碼告诉蜘蛛“這個地址現在還有没有效”,收錄和索引是後續基于内容再做的判断。所以狀態碼属于前置环节,一旦弄错,後面的優化都在错誤的基础上進行。

常见狀態碼對收錄的影响

200:正常内容

返回 200 表示頁面可用,蜘蛛會正常解析内容。需要注意的是,200 只說明地址有效,不代表内容有價值。一個空頁面、一個只有模板没有正文的頁面,同样可以返回 200。

301:永久跳轉

301 是告诉蜘蛛“這個地址已经永久換到新地址”,權重和索引通常會被传递到目标 URL。改版、合並頁面、換域名时用 301 是正确做法。注意跳轉鏈不要過長,A 到 B 再到 C 這種多級跳轉會稀释传递效果,理想狀態是一步到位。

302、307:临时跳轉

临时跳轉的本意是“地址暂时變了,之後還會回来”。如果拿 302 做長期跳轉,蜘蛛可能仍保留原 URL 的索引,也可能反复抓取原地址。需要長期生效的跳轉,應改用 301。

404:地址不存在

404 表示這個地址确實找不到對應内容。對于已刪除且不打算恢复的頁面,返回 404 是合理的。蜘蛛抓到 404 後會逐步把该 URL 從索引中移除,只是這個過程需要時間,不會立刻生效。

410:地址已永久刪除

410 和 404 的结果類似,但语义更强,明确表示永久刪除、不會回来。理论上蜘蛛處理 410 的速度會快一些,實际差异並不總是明顯。如果一個 URL 有大量外鏈,或者你希望它尽快登出索引,用 410 是更明确的表態。

5xx:服務器错誤

500、502、503 表示服務器端出了問题。偶發的 5xx 蜘蛛會稍後重试;如果持續返回 5xx,蜘蛛會降低抓取频率,已经索引的頁面也可能暂时從结果中消失。503 的正确用法是主動维護:加上 Retry-After 头,告诉蜘蛛多久之後再来,避免它把暂时不可用誤判為永久失效。

要点:狀態碼描述的是“地址的狀態”,不是“内容的质量”,两者要分開判断。

软 404:返回 200 但内容無效

比狀態碼寫错更常见的,是软 404:頁面返回 200,但内容是空的、报错的,或者只有一句“该商品已下架”。蜘蛛拿到的是 200,會当成正常頁面處理,于是一個没有價值的 URL 被反复抓取,甚至進入索引,長期占着抓取资源。

自查方法很简單:把頁面正文抓取下来,看是否有實质内容。如果頁面實际已经無效,就應该返回 404 或 410,而不是繼續用 200 硬撑。

刪除頁面时的選擇顺序

  1. 先確認這個 URL 是否還有替代頁面。有替代,用 301 指過去。
  2. 没有替代、且确定不再恢复,用 404 或 410。
  3. 只是暂时下线,用 503 加 Retry-After,不要用 404。
  4. 頁面還在但内容已失效,先改内容或狀態碼,不要让它繼續以 200 存在。

几個容易被忽略的细节

  • 狀態碼要真實。用 JS 或前端路由“伪造”的 404 頁面,服務器實际返回的仍是 200,蜘蛛看到的也是 200。
  • 跳轉目标要是可索引地址。301 跳到一個 404 或一個 noindex 頁面,等于白跳。
  • 別用 robots.txt 屏蔽要刪除的頁面。屏蔽後蜘蛛抓不到狀態碼,反而無法確認頁面已失效,索引可能長期保留。
  • 修改後需要時間生效。索引更新不是即时的,改完繼續观察即可,不需要反复改動。

總结一句:狀態碼是给蜘蛛的第一层信号,先把這一层寫對,再去谈内容质量和内鏈,很多收錄問题會少一半。改完之後定期核對索引狀態,比每天盯着數值波動更有意义。