搜尋抓取

死鏈與软 404:抓取路径上的死胡同怎样拖慢 URL 發現

蜘蛛靠連結前進,遇到 404 或软 404 就得回头。本文拆開硬 404、软 404 和空结果頁的区別,說明它們如何浪費抓取机會、切断通往深层頁的連結通路,並给出一套可落地的狀態碼處理與内鏈自查办法。

搜尋抓取

死鏈與软 404:抓取路径上的死胡同怎样拖慢 URL 發現

站内連結本质上是一張图,搜尋蜘蛛顺着這張图從一個节点走到下一個节点。图里任何一個节点返回错誤,路径就在那里断掉。断一處看似只是少了一個頁面,實际影响往往沿着連結往上蔓延:原本可以由此繼續前進的深层頁面,失去了被發現的一條通路。

三種“撞墙”並不一样

硬 404 是最干脆的一種:地址不存在,服務器直接给出明确答复。蜘蛛很快會放下這個地址,把注意力轉回有效頁面。

软 404 麻烦得多:頁面返回 200,狀態看起来正常,但内容為空,或者正文只寫了一句“内容不存在”“已下架”。蜘蛛需要額外判断才能確認這里没有東西可抓,判断成本比你想象的高。

還有一類介于两者之間的空壳頁,比如無结果的篩選頁、站内搜尋頁、JS 渲染失敗後留下的空白容器。它們有完整模板,有導航有頁脚,唯一缺的是主体内容。

死胡同的代價不止一個頁面

  • 抓取額度被消耗在没有产出的地址上,真正需要复查的頁面往後排。
  • 通往深层頁的連結通路被切断,新 URL 的發現速度随之變慢。
  • 蜘蛛可能在後續几次回訪里重复確認同一批失效地址,形成無效往返。
  • 用戶和蜘蛛被同时引向無内容頁面,跳出率與抓取效率一起變差。

哪些情况最容易長成软 404

  1. 篩選、排序、分頁參數超出有效范围,生成了空列表頁。
  2. 商品下架、文章刪除之後,模板頁仍然保留並返回 200。
  3. 站内搜尋结果頁被外部連結或内鏈大量指向。
  4. 依赖脚本渲染的頁面,脚本失敗时只留一個空容器。
  5. 過期活動頁只改了文案,没有調整狀態碼或跳轉。

處理思路:先定狀態,再修路径

狀態碼决定蜘蛛怎么理解這個地址,路径决定它還能不能繼續走。两件事要分開做,但都要做。

  1. 永久下线且存在替代頁:301 跳轉到内容最接近的有效頁面,避免跳到首頁這種泛化目标。
  2. 永久下线且没有替代:用 410 或 404 明确表態,不要用 200 硬撑。
  3. 临时下架:保留 200,同时补充說明性内容和相關連結,別让頁面空着。
  4. 空结果頁:無结果时返回 404 或加 noindex,並從内鏈與 Sitemap 中撤掉入口。
  5. 修复指向失效地址的入口:導航、正文内鏈、相關推荐、頁脚,都要跟着一起改。

別忽略連結通路本身

處理完狀態碼只是第一步。深层頁通常依赖少數几條固定連結進入,如果其中某一條正好是失效地址,頁面與入口之間的跳數就會增加。跳數一多,被發現的概率和复查频率都會下降,表現上很像“内容没更新所以不抓”,實际是路断了。

所以修完 404,建议再沿原路径走一遍:從首頁出發,看還能不能靠点击到達那些目标頁面。如果必须绕遠路,說明需要补一條更直接的入口連結。

定期自查的几個動作

  • 每月做一次全站連結掃描,按被指向次數排序失效 URL,優先修高價值的。
  • 看抓取日誌里 404 的占比和集中位置,判断是零散失效還是成片塌陷。
  • 检查 Sitemap 是否還在推送已经刪除或下线的地址。
  • 確認站内搜尋頁、多級篩選頁没有被大量内鏈指向。
  • 新頁面上线前,检查它引用的舊版本地址是否已经失效。
一個 404 本身並不致命,真正的問题是它出現在通往几十個有效頁面的必经之路上。

把死鏈当成路径問题而不是頁面問题来看,處理顺序會更清楚:先让错誤地址有明确答复,再让連結图重新连通。做完這两步,抓取节奏通常會在之後的一段時間里逐步恢复,剩下的就是内容和更新的功夫了。