在日誌里看到某個 URL 被反复抓取,狀態碼是 200,但打開一看只有頁头頁脚和一句"没有找到相關内容",這類頁面通常被称為软 404。它的影响比較隐蔽:站点层看不到报错,爬虫却拿到一個没有實质内容的頁面。
软 404 和真正的 404 差別在哪
真正的 404、410 是明确的信号,告诉爬虫這個地址没有内容,後續不必反复来取。软 404 返回的是 200,等于告诉爬虫"這里有内容",于是抓取繼續,索引里可能留下一個空壳。差別不在頁面好不好看,而在返回给爬虫的狀態信号是否准确。
常见的几個来源
- 篩選、排序、分頁组合後结果為空,頁面仍然渲染出完整模板;
- 商品或文章已下架、已刪除,但詳情頁路由還在,返回的是空模板;
- 參數被随意拼接,命中一個不存在的内容 ID,程序兜底返回 200;
- 前端渲染失敗或接口超时,只留下骨架屏和占位文案;
- 活動頁過期後没有下线,内容被替換成"活動已結束"。
為什么它會影响收錄
一是浪費抓取预算。爬虫把時間花在這些空頁面上,真正需要更新的頁面来得就少。二是稀释质量判断。一個站点里大量返回 200 却没有内容的 URL,會让整体頁面质量的评估變差。三是索引里可能出現空壳结果,用戶搜到点進去什么也没有。
核對顺序
- 先看狀態碼。用抓取工具或命令行確認返回的是 200、404 還是 301,注意区分渲染前後的差异。
- 再看返回给爬虫的 HTML。很多软 404 只發生在無 JS 的原始 HTML 里,或者在渲染後才补上内容,两者要分開看。
- 確認頁面是否有實质内容。标题、正文、可用信息是否具备,還是只有模板和一句提示。
- 检查站内入口。這些 URL 是從哪里被發現的,列表頁、搜尋頁還是外鏈,入口不清理會持續产生新的空頁面。
- 看索引狀態。已经進入索引的空壳頁,需要在下线後观察一段時間才會逐步消失。
處理时按内容狀態分情况
- 内容永久不存在:返回 404 或 410,同时清理站内指向它的連結。
- 暂时缺货或缺内容:保留 200 也可以,但要给出明确說明、推荐入口或返回上一級的路径,避免頁面只有一句提示。
- 參數组合導致無结果:要么让這類组合不产生可訪問的獨立 URL,要么在無结果时返回合适的狀態,不要一律 200。
- 渲染失敗:先修接口和兜底逻辑,再谈收錄。
判断标准可以用一句话概括:如果這個頁面交给用戶看,用戶會觉得"這里没有東西",那么它大概率也不该以 200 的形式交给爬虫。
收口之後怎么盯
處理完不要只改一次。把這類頁面加進抓取日誌的观察清單,定期統計返回 200 但内容為空的 URL 數量;同时留意索引里的空壳頁有没有减少。上线新模板、新篩選逻辑时,把"無结果时的返回狀態"寫進驗收項,比事後批量清理省事得多。