服務器返回 200,頁面却只有一句“暂無内容”,或者商品下架後只剩一個空壳模板——這類地址在站内並不少见,但對搜尋蜘蛛来说,它传達的信号是矛盾的:狀態碼说“這里有東西”,頁面本身却说“什么都没有”。這種矛盾就是软 404。
软 404 為什么會让蜘蛛走错路
蜘蛛判断一個地址是否值得繼續抓取,依赖两類信息:HTTP 狀態碼和頁面内容本身。当两者冲突时,它通常先按 200 處理,把頁面当成正常内容入库,随後在质量评估阶段發現内容空洞,再把它降級。這個過程可能跨越多轮抓取,中間反复消耗抓取资源。
更麻烦的是路径問题。一個返回 200 的空頁面,往往還带着導航、面包屑和頁脚連結,蜘蛛會顺着這些連結繼續往下走,把整條鏈路都走一遍,最後發現每個节点都是空的。
软 404 對抓取的三個實际影响
- 抓取预算被空轉:蜘蛛把時間花在没有内容的頁面上,留给真正有價值的頁面的額度就少了。
- URL 發現鏈條被拖慢:内鏈指向的空頁面被反复回訪,新地址的發現優先級被推後。
- 狀態判断變得不稳定:同一個模板下,有的頁面有内容、有的没有,蜘蛛對目錄整体的判断會摇摆。
怎么把站内的软 404 找出来
- 看抓取統計里的软 404 报告,這是最直接的入口,注意区分是模板問题還是單頁問题。
- 抽服務器日誌:找那些返回 200、但响應体积明顯偏小、正文長度接近模板骨架的地址。
- 按目錄排查:列表頁翻到最後一頁、篩選條件组合為空、已下架商品詳情頁,是三個高發区。
處理方式:先分清“暂时空”和“永遠空”
- 内容只是暂时缺失(缺货、活動未開始):保留地址,给出明确提示,同时把相關内鏈暂时指向替代頁面,避免蜘蛛顺着走到空頁。
- 内容已永久移除且没有替代品:返回 404 或 410,不要用 200 加一句“内容不存在”。
- 有更合适的承接頁面:做 301,把地址和連結關系一起交给新頁面。
- 想保留頁面但不希望被抓取:用 noindex,注意 noindex 的頁面仍可能被爬取,只是不進索引。
核心原則:狀態碼要和頁面實际狀態一致。让蜘蛛一眼判断“這條路走不通”,比让它自己反复猜要划算得多。
Sitemap 和内鏈要同步收口
處理完狀態碼之後,還要检查两條通路。Sitemap 里不要再保留已经返回 404 的地址,否則蜘蛛會因為文件里的信号再次回訪;内鏈层面,把指向空頁面的連結改掉或去掉,尤其是導航和列表頁模板里的循环連結。如果空頁面數量較多,可以用 robots.txt 屏蔽參數化路径,但要注意別把正常頁面一起挡掉。
软 404 不會立刻带来明顯波動,它的代價是長期而缓慢的——抓取效率被摊薄,新頁面的發現速度被拖慢。定期掃一遍空頁面,比事後补救省力得多。