站点執行時間一長,失效 URL 就會慢慢堆积:改版删掉的栏目、下架的商品、早期拼错的參數連結,還有被外部站点引用但早已不存在的頁面。蜘蛛迟早會撞上這些地址,而站点如何回應,會影响它後續在你站内分配抓取资源的方式。
404、410 和软 404 的差別
三者的共同点是“這里没有内容”,但對蜘蛛传達的信号强度並不相同。
- 404:通用地表示頁面不存在。蜘蛛收到後會逐步把该 URL 從待抓队列里清理,但因為 404 也可能是临时狀態(比如程序異常),它不會立刻彻底放弃。
- 410:明确表示“永久移除”。信号更干脆,通常比 404 更快让蜘蛛停止回訪,适合確認再也不會恢复的 URL。
- 软 404:服務器返回 200,頁面却是“内容不存在”“已下架”這類空壳。蜘蛛要先把 HTML 抓下来才能判断,等于白花一次抓取成本,還容易让大量空頁面進入索引。
如果 URL 确實永久废弃,410 更省事;如果只是暂时不可訪問,让它正常返回 404 並保留恢复的可能即可。真正要避免的,是软 404 長期存在。
软 404 常见的几種長相
- 商品下架後仍返回列表頁或推荐頁,狀態碼是 200,正文却換成了別的内容;
- 站内搜尋無结果頁返回 200,頁面结构完整,但只有一句“没有找到相關内容”;
- 程序出错时返回 200,正文是一片空白或預設模板;
- 需要登入才能看的内容,對未登入的蜘蛛返回 200 的登入提示頁。
這几種情况在用戶侧看起来“没报错”,對抓取来说却属于典型浪費。排查时可以拿几個已知失效的 URL,用開發者工具或抓取調试工具核對狀態碼與正文内容是否一致。
清理失效 URL 的常規流程
- 收集:從服務器日誌里筛出蜘蛛訪問後返回 404、410 的 URL,按訪問频次排序。频次高的,往往是外鏈或站内鏈還在指向它。
- 分類:区分“永久废弃”“暂时下线”“應重定向到新地址”三類,處理方式不同。
- 處理站内鏈:把指向失效 URL 的内鏈改成有效地址或直接刪除。只改狀態碼而不動内鏈,蜘蛛下次仍會顺着連結撞進来。
- 確認返回碼:永久废弃的给 410,暂时下线的给 404,需要承接的用 301 指向最相關的新頁面。
- 观察复訪:處理完一到两周後回看日誌,確認這些 URL 的抓取次數在下降,而不是被反复訪問。
死鏈要不要做跳轉
301 能承接一部分權重,也會让蜘蛛多走一跳。判断标准是内容有没有對應的替代頁:
- 舊商品被新款替代——跳到新款詳情頁,用戶和蜘蛛都能找到想要的東西;
- 栏目整体下线,没有對應頁面——跳到上級栏目,通常比跳到首頁更贴切;
- 完全不相關或已無替代——直接 410,比强行跳到首頁更清爽。
把大量失效 URL 统一 301 到首頁,看起来“没有死鏈”,實际上等于给蜘蛛制造了一批指向同一地址的重复入口,跳轉鏈和锚文本都會變得没有意义。
收敛之後看什么
清理不是一次性工作。内容下架、活動結束、临时頁面過期,都會不断产生新的失效 URL。比較稳妥的做法,是把狀態碼規范和站内鏈检查放進日常流程:新頁面發布前確認連結有效,下架内容时同步决定它是 404、410 還是 301。這样蜘蛛每次来,走的路径都尽量是有内容的頁面,抓取效率也會更稳一些。