有些頁面点開是能打開的,服務器返回 200,導航、頁脚、样式一應俱全,唯獨主体区域是空的:篩選條件没有匹配结果、搜尋词没有命中、商品已经下架、活動已经結束。這種頁面在用戶眼里是「没東西可看」,在搜尋引擎眼里却是一個正常响應、可以被抓取的 URL。它進入索引的過程通常悄無声息,等到發現时,索引里已经积了一堆没有内容的地址。這就是常说的软 404。
软 404 和硬 404 的区別
硬 404 是服務器明确告诉蜘蛛「這個地址不存在」,返回 404 或 410 狀態碼。蜘蛛收到之後,通常不會把它放進索引,已经收錄的也會逐步移除。
软 404 不一样:頁面返回 200,内容却是空的,或者只剩下几句没有信息量的說明。蜘蛛要先把頁面抓下来、渲染、提取正文,才能判断這條 URL 有没有可索引的東西。判断發生在抓取之後,而不是請求的那一刻,所以這些頁面有机會先被收進去,再慢慢被清理,中間存在一段滞後期。
返回 200 不代表頁面有價值。狀態碼只说「我還在」,不说「我有什么」。
這些空頁面通常從哪里来
- 篩選、排序、價格区間组合之後没有结果,但仍生成一個可訪問地址
- 站内搜尋的查询词没有命中,搜尋结果頁照样返回 200
- 商品、房源、职位等内容下架,詳情頁保留模板但主体為空
- 活動、专题結束,頁面只剩标题和一句結束语
- 分頁參數超出實际頁數,例如 page=99 依然能打開
- 參數被外部拼接後生成的半成品頁面
為什么它會被收錄
一是模板完整。導航、頁脚、推荐位都在,蜘蛛看到的不是空白 HTML,而是一個结构齐全的頁面,容易当成有效内容處理。
二是内部連結在给它投票。列表頁翻到空頁、篩選结果里出現空頁,連結结构依然存在,蜘蛛顺着連結反复訪問,反而加深了印象。有些站点的篩選與分頁連結是自動生成的,參數组合數量很大,等于批量制造空 URL。
三是它曾经有内容。商品下架、活動結束之前,這些 URL 是正常頁面,索引里本来就有记錄。内容消失之後,索引不會立刻同步,頁面會在「已收錄但主体為空」的狀態里停留一段時間。
自查:怎么發現站内的软 404
不需要复杂工具,几個動作就能摸出大概:
- 從索引狀態报告或站点查询里抽出疑似空頁的样本,逐個打開確認主体内容
- 翻訪問日誌,找那些被蜘蛛反复抓取、但用戶訪問很少的模板化地址
- 检查搜尋、篩選、分頁這几類頁面,看參數组合有多少、是否都返回 200
- 看站内搜尋的查询记錄,没有结果的词會生成哪些地址
處理顺序
優先級從高到低:
- 能返回 404 的就返回 404。内容确實永久不存在的,直接给 404 或 410,比任何补救都干净
- 頁面要保留但内容确實為空,加 noindex。注意 noindex 需要頁面處于可抓取狀態才生效,別同时用 robots.txt 屏蔽
- 空頁能找到對應有效頁的,把用戶和蜘蛛引過去。例如無结果时展示同類推荐或热门内容,让頁面重新有主体
- 清理内鏈和站点地图。不再指向這些地址,减少蜘蛛反复訪問
- 看參數源头。如果能從生成規則上限制無意义组合,比事後一條條清理省力得多
几個容易踩的坑
- 用 302 跳走但保留原地址:跳轉不等于刪除,舊地址可能長期停在索引里
- 把空頁统一跳首頁:大量不同 URL 指向同一目标,容易演變成另一種形式的問题頁
- noindex 和 robots 同时上:robots 挡住了抓取,noindex 也就没机會被讀到
- 站点地图里把參數頁一並提交:等于主動告诉蜘蛛「這些也請抓」
软 404 的關键不在「删得快」,而在「別让它一直生成」。抓取與收錄之間天然有滞後,控制来源比事後清理轻松。定期抽查一次空结果頁、下架頁和篩選頁,比等索引报告出来再動手更划算。