搜尋抓取

死鏈的三種寫法:404、410 與软 404 對蜘蛛路径的不同影响

404、410 和软 404 在蜘蛛眼里是完全不同的三種狀態。本文說明它們各自會怎样影响抓取路径、重复试探與抓取額度,並给出一套從日誌篩選到内鏈清理的處理顺序,帮助站長把死鏈带来的代價控制在可接受的范围。

搜尋抓取

死鏈的三種寫法:404、410 與软 404 對蜘蛛路径的不同影响

蜘蛛沿着内鏈在站点里走,遇到打不開的地址是常事。但“打不開”並不是一種狀態:404、410、软 404、连接被重置、301 指向一個已经不存在的頁面,對蜘蛛来说含义完全不同。分不清這些狀態,修复動作就容易做反。

先分清三種“死”

404:暂时找不到

服務器告诉蜘蛛這個地址没有内容,语气是“現在没有”。蜘蛛一般會记錄,並在一段時間内回来复查,確認仍然不存在之後,慢慢降低訪問频率。404 是可以接受的預設狀態,适合内容确實下架、但地址可能還會复用的场景。

410:明确没有了

410 表達的是永久移除。蜘蛛收到之後,通常比 404 更快减少重试,也更容易把這條 URL 從待抓队列里清出去。大批量下架、整個栏目砍掉时,用 410 比用 404 更省抓取額度。

软 404:最难處理的一種

服務器返回 200,頁面上却寫着“商品已下架”“内容不存在”。蜘蛛看到的是一個正常頁面,于是照常抓取、照常處理,只是這個頁面没有任何可用的信息。它比真正的 404 更消耗资源,也更难诊断,因為日誌里的狀態碼看起来一切正常。

死鏈在抓取路径上留下的影响

  • 路径断裂:内鏈指向死鏈,蜘蛛走到這里就走不下去了,後面的内容要靠別的入口重新發現。
  • 重复试探:狀態碼不明确时,蜘蛛無法判断该不该放弃,只能反复回来確認。
  • 額度被占用:抓一個 404 和抓一個正常頁面的開销差不多,但前者没有任何产出。
  • 信号中断:連結的指向關系失效,原本通過内鏈传递的信息也跟着断掉。

一個常见的连鎖反應

頁面 A 被刪除,301 到頁面 B;頁面 B 後来也被刪除,直接返回 404。蜘蛛跟着跳一次、两次,最後落空——這條鏈路在它眼里就是無效跳轉。類似情况攒多了,站内連結的可信度會受影响,蜘蛛再来抓取时的判断也會更保守。

處理顺序怎么排

  1. 從服務器日誌里筛出狀態碼異常、但被反复抓取的 URL,按抓取次數排序。
  2. 区分是临时下线還是永久移除,分別用 404 和 410,不要一律 301。
  3. 检查站内還有哪些頁面連結到這些 URL,把入口改掉或删掉。
  4. 從 Sitemap 和分片文件里清掉這些地址,避免繼續主動提交。
  5. 修复後观察一段時間日誌,確認重试次數确實在下降。
把大量死鏈统一 301 到首頁,看起来干净,實际上是在批量制造软 404:蜘蛛每次跟過去,看到的都是同一張與它要找的内容無關的頁面。

顺手检查的几處

  • 站内搜尋、篩選、排序這類參數生成的地址,失效後是否留下成千上萬條死鏈。
  • 舊版栏目頁和标簽頁,是否還挂在導航或頁脚里。
  • 正文中的外鏈和图片連結是否已经失效。
  • 移動端與 PC 端是否返回了不一致的狀態碼。

死鏈本身不會直接拖垮站点,但狀態碼含糊、入口不清、残留地址長期存在,會让蜘蛛在同一個地方反复消耗時間。把狀態说清楚,把入口收干净,剩下的交给蜘蛛自己判断。