搜尋抓取

200 狀態碼下的空壳頁面:软 404 怎么让抓取白跑一趟

服務器返回 200、蜘蛛也顺利抓到了,頁面里却没有實质内容,這類软 404 會白白消耗抓取額度。本文梳理空壳頁面的常见来源、蜘蛛的判断线索,以及從内鏈、Sitemap 到狀態碼的處理顺序,帮站点减少無效抓取。

搜尋抓取

200 狀態碼下的空壳頁面:软 404 怎么让抓取白跑一趟

蜘蛛拿到一個 URL,服務器返回 200,頁面也顺利下载完成——從抓取日誌看這是一次成功請求。但如果這個頁面里没有真正的内容主体,蜘蛛最终還是會把 URL 放進“低價值”那一堆。這類頁面通常被称為软 404:狀態碼是正常的,内容却是空的。

它和 404 的差別在于成本。真正的 404 是一次快速失敗,蜘蛛很快知道這里没有東西,之後减少回訪即可;软 404 要求蜘蛛把 HTML 完整下载、解析、和站内其他頁面比較,最後才得出同样的结论。同样的抓取額度,被消耗在了一次没有结果的判断上。

哪些頁面最容易變成空壳

  • 無结果的搜尋頁和篩選頁:用戶輸入的關鍵詞组合没有匹配項,頁面只剩标题和一句“没有找到相關内容”。
  • 空分類與空标簽頁:分類下的商品或文章已全部下架、迁移,模板還在正常渲染。
  • 售罄或已下架的商品頁:只剩框架、導航和推荐位,主体信息被清空。
  • 過期的活動與专题頁:活動結束後内容被撤下,URL 仍然可以訪問。
  • 渲染失敗的頁面:前端依赖的接口报错,HTML 里只有頁头頁脚,主体是一個空容器。

蜘蛛怎么判断這是空壳

搜尋引擎没有公開判定公式,但從抓取行為能看出几個常被參考的信号:

  • 正文文本量明顯低于同模板的其他頁面;
  • 頁面主体與站内大量其他頁面高度相似,只有标题不同;
  • 頁面里的連結极少,或者連結都集中在頁头頁脚這類全站公共区域;
  • 用戶進入後很快返回,停留時間接近于零。

反過来,如果頁面主体清晰、有獨立的文字描述、有指向相關内容的連結,即便内容不多,也不太會被当成空壳。

空壳頁面带来的實际损失

最直接的损失是抓取額度。一個站点每天能被抓取的頁面上限有限,空壳頁面占的比例越高,真正需要更新的頁面被轮到的机會就越少。其次是内鏈:如果站内大量連結指向這些空頁面,權重會在這些死胡同里被摊薄,蜘蛛顺着連結走過去也拿不到新東西。最後是判断噪声——日誌里一批 200 狀態碼的請求看起来都很正常,掩盖了真正的结构問题。

處理顺序:先止血,再清理

  1. 先找到来源。從服務器日誌和站長平台报告中筛出有抓取、未收錄的 URL 集合,按 URL 模式归類,通常很快能看出是搜尋參數、篩選參數,還是某個即將下线的栏目。
  2. 能删内鏈就先删。空頁面的入口大多来自内鏈和 Sitemap,把這两處的引用去掉,比改狀態碼见效更快。
  3. 该给什么狀態碼就给什么。永久下线的頁面返回 410 或 404;临时缺货、可能恢复的頁面保留 200,但要补上内容或加 noindex 更合适。
  4. 搜尋和篩選结果頁。可以對無结果的组合直接返回 404 或做 noindex,同时用 robots.txt 屏蔽高風險的參數组合,避免蜘蛛在參數空間里反复试探。
  5. 检查渲染鏈路。如果是前端渲染導致的空壳,需要確認蜘蛛执行脚本时接口是否可達、返回是否稳定,別让一次接口超时變成一批空頁面。

日誌里的识別方法

软 404 不會以狀態碼的形式出現在日誌里,需要換個角度找。一種做法是把日誌中蜘蛛抓取的 URL 與頁面正文長度做關联,正文低于某個阈值的頁面單獨列出来看;另一種是观察抓取频次的變化,某個 URL 模板的抓取次數持續下降,往往說明蜘蛛已经把它归到低價值一類。把這两條线索交叉起来,通常能定位到大部分空壳頁面。

软 404 的本质不是頁面出错,而是頁面存在、却對用戶和蜘蛛都没有信息量。處理它的關键是减少這類 URL 的产生,而不僅僅是在被抓之後去清理。

最後一点:清理空壳頁面是個持續工作。栏目調整、商品下架、活動結束都會不断产生新的空頁面,最好在模板层面加一道判断——内容為空时不生成頁面,或直接返回合适的错誤狀態碼,而不是让它以一個完整的 200 頁面留在站点里。