搜尋抓取

失效 URL 的清理节奏:404、410 與软 404 该怎么選

站点執行一段時間後,失效 URL 會不断累积,用哪種狀態碼回應會直接影响蜘蛛後續的抓取分配。本文對比 404、410 與软 404 的信号差异,梳理软 404 的常见成因,並给出從日誌收集、分類處理到复訪观察的清理流程,同时說明什么情况该用 301 承接、什么情况直接放弃。

搜尋抓取

失效 URL 的清理节奏:404、410 與软 404 该怎么選

站点執行時間一長,失效 URL 就會慢慢堆积:改版删掉的栏目、下架的商品、早期拼错的參數連結,還有被外部站点引用但早已不存在的頁面。蜘蛛迟早會撞上這些地址,而站点如何回應,會影响它後續在你站内分配抓取资源的方式。

404、410 和软 404 的差別

三者的共同点是“這里没有内容”,但對蜘蛛传達的信号强度並不相同。

  • 404:通用地表示頁面不存在。蜘蛛收到後會逐步把该 URL 從待抓队列里清理,但因為 404 也可能是临时狀態(比如程序異常),它不會立刻彻底放弃。
  • 410:明确表示“永久移除”。信号更干脆,通常比 404 更快让蜘蛛停止回訪,适合確認再也不會恢复的 URL。
  • 软 404:服務器返回 200,頁面却是“内容不存在”“已下架”這類空壳。蜘蛛要先把 HTML 抓下来才能判断,等于白花一次抓取成本,還容易让大量空頁面進入索引。

如果 URL 确實永久废弃,410 更省事;如果只是暂时不可訪問,让它正常返回 404 並保留恢复的可能即可。真正要避免的,是软 404 長期存在。

软 404 常见的几種長相

  • 商品下架後仍返回列表頁或推荐頁,狀態碼是 200,正文却換成了別的内容;
  • 站内搜尋無结果頁返回 200,頁面结构完整,但只有一句“没有找到相關内容”;
  • 程序出错时返回 200,正文是一片空白或預設模板;
  • 需要登入才能看的内容,對未登入的蜘蛛返回 200 的登入提示頁。

這几種情况在用戶侧看起来“没报错”,對抓取来说却属于典型浪費。排查时可以拿几個已知失效的 URL,用開發者工具或抓取調试工具核對狀態碼與正文内容是否一致。

清理失效 URL 的常規流程

  1. 收集:從服務器日誌里筛出蜘蛛訪問後返回 404、410 的 URL,按訪問频次排序。频次高的,往往是外鏈或站内鏈還在指向它。
  2. 分類:区分“永久废弃”“暂时下线”“應重定向到新地址”三類,處理方式不同。
  3. 處理站内鏈:把指向失效 URL 的内鏈改成有效地址或直接刪除。只改狀態碼而不動内鏈,蜘蛛下次仍會顺着連結撞進来。
  4. 確認返回碼:永久废弃的给 410,暂时下线的给 404,需要承接的用 301 指向最相關的新頁面。
  5. 观察复訪:處理完一到两周後回看日誌,確認這些 URL 的抓取次數在下降,而不是被反复訪問。

死鏈要不要做跳轉

301 能承接一部分權重,也會让蜘蛛多走一跳。判断标准是内容有没有對應的替代頁:

  • 舊商品被新款替代——跳到新款詳情頁,用戶和蜘蛛都能找到想要的東西;
  • 栏目整体下线,没有對應頁面——跳到上級栏目,通常比跳到首頁更贴切;
  • 完全不相關或已無替代——直接 410,比强行跳到首頁更清爽。
把大量失效 URL 统一 301 到首頁,看起来“没有死鏈”,實际上等于给蜘蛛制造了一批指向同一地址的重复入口,跳轉鏈和锚文本都會變得没有意义。

收敛之後看什么

清理不是一次性工作。内容下架、活動結束、临时頁面過期,都會不断产生新的失效 URL。比較稳妥的做法,是把狀態碼規范和站内鏈检查放進日常流程:新頁面發布前確認連結有效,下架内容时同步决定它是 404、410 還是 301。這样蜘蛛每次来,走的路径都尽量是有内容的頁面,抓取效率也會更稳一些。