搜尋抓取

搜尋蜘蛛抓取:软 404 與空壳頁面返回 200 造成的抓取预算浪費核對

商品下架、篩選结果為空、參數拼错的頁面常常仍返回 200,只剩标题和框架,蜘蛛反复回訪却拿不到有效内容。本文梳理软 404 的常见形態、狀態碼與頁面内容不一致的核對顺序,並說明如何配合 Sitemap 與内鏈清理入口,把抓取预算留给真正需要更新和收錄的 URL。

搜尋抓取

搜尋蜘蛛抓取:软 404 與空壳頁面返回 200 造成的抓取预算浪費核對

不少站点在商品下架、库存清零、搜尋结果為空、參數頁無匹配内容时,頁面依然返回 200。用戶看到的是「暂無相關内容」,蜘蛛看到的是一個正常的 HTML 文档。這類頁面就是通常说的软 404。它不會像 404 那样被明确标记為無效,反而會持續占用抓取预算,反复進入抓取队列。

软 404 為什么會被反复抓取

蜘蛛判断一個 URL 是否還有價值,主要看狀態碼、頁面主体内容、内鏈指向以及歷史上的抓取反馈。当頁面返回 200,同时又存在于 Sitemap 或站内連結中,抓取調度就會把它当作正常頁面安排回訪。回訪後如果仍然只是空壳,预算就被消耗在一次没有产出的請求上。

更麻烦的是,這類 URL 往往不是一两個,而是成批出現:篩選參數组合、已下架商品、已過期的活動頁,動辄成千上萬條。抓取预算被摊薄之後,新頁面和真正需要更新的頁面,回訪間隔會被明顯拉長。

常见的软 404 形態

  • 商品或文章已刪除,頁头頁脚完整,正文位置顯示「内容不存在」。
  • 搜尋、篩選、排序结果為空,模板照常渲染。
  • 活動已結束,頁面僅保留标题和倒計时残留。
  • 參數拼错或參數被忽略,返回一個預設列表頁。
  • 前端拿不到資料,只在首屏留下骨架屏结构。

核對顺序

  1. 先從抓取日誌里筛出回訪频繁、但响應体积明顯偏小的 URL 段。
  2. 用同一 User-Agent 請求這些 URL,確認返回狀態碼是否為 200。
  3. 對比正常頁面的正文文本長度,判断是否落在空壳区間。
  4. 检查這些 URL 是否仍出現在 Sitemap、内鏈模块、分頁或标簽聚合頁中。
  5. 確認頁面對應資料是永久刪除、临时下架,還是參數错誤導致。
狀態碼只是结果,真正要回答的問题是:這個 URL 以後還有没有内容可看。没有内容就该给出明确信号,而不是让它繼續被当成正常頁面。

按情况给出不同處理

  • 内容永久刪除、無替代頁面:返回 410 或 404,同时從 Sitemap 和内鏈中移除。
  • 内容临时下架、预計恢复:返回 503 並带上 Retry-After,不要用 200 硬撑。
  • 參數错誤:規范到有效 URL 或返回 404,不要静默兜底成首頁或列表頁。
  • 搜尋结果為空的组合參數頁:考虑用 robots meta 的 noindex,並避免在内鏈中大量暴露。
  • 确實需要保留的聚合頁:补上編輯内容或推荐内容,让它不只是空壳。

和内鏈、Sitemap 一起收口

狀態碼改對之後,還要把入口一起清理。软 404 大多有多個入口,Sitemap 一份、标簽頁一份、相關推荐一份。只改狀態碼而不管内鏈,蜘蛛仍會顺着舊連結不断找回来。建议按入口類型逐項核對:主導航、面包屑、列表頁、标簽聚合、站内搜尋、Sitemap 分片。

同时留意服務器稳定性带来的干扰。如果节点在資料讀取超时後返回了空模板,而不是错誤碼,就會出現「有时空、有时正常」的現象。核對时要在不同時間点重复請求,避免把偶發問题当成稳定结论。

驗證與長期监控

  • 改版後用同一批 URL 复测狀態碼和正文体积。
  • 观察抓取日誌中该 URL 段的回訪频次是否下降。
  • 检查抓取量是否向新頁面和有更新需求的頁面倾斜。
  • 把「狀態碼 200 但正文過短」做成日常告警項,而不是一次性排查。

软 404 的處理本身不复杂,难的是持續维持。只要頁面上线流程里没有「無内容也返回 200」的預設逻辑,這類問题就不會反复出現。