站点里出現 404 是常態,尤其是改版、下架商品、合並栏目之後。真正影响蜘蛛抓取的,不是“有没有 404”,而是這些 404 落在抓取路径的哪個位置、蜘蛛還要在這條路上走多少次。
蜘蛛遇到 404 时會做什么
蜘蛛請求一個 URL 拿到 404,它會记錄這次结果,一般不會因此放弃整個站点。但如果同一個目錄、同一段内鏈反复指向已经不存在的頁面,這條路径在後續抓取里被回訪的優先級通常會下降。換句话说,404 本身不是致命問题,让蜘蛛沿着内鏈反复撞墙才是。
硬 404、软 404 和 410 的区別
- 硬 404:URL 确實不存在,服務器返回 404 狀態碼,這是最干净的處理方式。
- 软 404:狀態碼是 200,但頁面寫着“内容已刪除”,或者只剩一個空模板。蜘蛛會把它当成正常頁面繼續抓,等于用一個空壳占着抓取額度。
- 410:明确告诉蜘蛛這個地址已经永久移除。對确定不再恢复的内容,410 比 404 更直接,但同样要避免大量 410 長期挂在内鏈里。
三類里最需要處理的是软 404。它不會出現在服務器的 404 統計里,只能靠頁面内容抽查,或者從日誌里高频出現的低质頁面去發現。
内鏈里的死鏈要優先修
外鏈指向的 404 你控制不了,但站内内鏈是你自己的抓取路径。首頁、栏目頁、分頁模板、相關推荐模块里如果挂着死鏈,蜘蛛每走一次這條路径就撞一次,成本會累积。
- 首頁和一級栏目里的死鏈,影响范围最大,先修。
- 被抓取频率最高的模板頁,比如列表頁和詳情頁底部的推荐位,逐個检查是否還有失效連結。
- Sitemap 里仍在列出的 URL,如果頁面已经不存在,要么從地图里移除,要么改成 301。
该 301 還是保留 404
判断标准可以简單一点:這個舊 URL 有没有一個语义等價的替代頁面。
- 有等價内容:301 到最接近的那一篇,不要统一跳到首頁。
- 没有等價内容:保留 404,並在頁面上给出返回栏目和首頁的連結。
- 内容完全不相關:不要為了“减少 404”把大批失效 URL 全部 301 到首頁。這種全站跳首頁的做法很容易被识別為软 404,原来那條路径的信息也丢了。
301 是搬家的路标,不是垃圾桶。把所有舊地址都倒進首頁,蜘蛛拿到的只是一個没有信息的终点。
404 頁面本身也要给出路
失效的 URL 可能仍有外部連結或用戶收藏,蜘蛛也會因為舊外鏈再次訪問。404 頁面除了返回正确的狀態碼,還應该带上返回栏目、首頁和站内搜尋的入口,让落在這一頁的蜘蛛還有下一层可以走,而不是停在死胡同里。
怎么確認死鏈還在被反复抓
- 從服務器日誌里篩選狀態碼為 404 和 410 的請求,只保留蜘蛛 UA 的记錄。
- 按命中次數排序,命中高的說明這條路径還在被反复走。
- 逐個對照来源:是内鏈残留、Sitemap 未更新,還是外部舊連結。
- 分批修改,改完再观察一段時間的日誌,不要一次性替換大量 URL。
不必追求死鏈清零
站点規模上去以後,少量 404 是正常現象,也不值得為几個低频死鏈反复折腾。把精力放在被抓取频率高、位于主干路径上的死鏈上,收益通常比全站掃一遍更大。真正要避免的是两種情况:主干路径直接指向 404,以及大量软 404 長期占用抓取額度。