有些頁面從来没有返回過 404,服務器日誌里狀態碼一直是 200,但在索引覆盖率报告里,它們却躺在“已排除”一栏,理由寫着“软 404”。這種情况让人困惑:明明是正常响應的頁面,為什么搜尋引擎不認?
软 404 到底是什么
软 404 指的是:服務器返回的是成功狀態碼(通常是 200),但頁面本身的内容、结构或用途,让搜尋引擎判断它“等價于不存在”。判断依據不在狀態碼,而在頁面實际给出的東西。
換句话说,狀態碼只說明請求被處理了,不說明這個地址值得在索引里留一個位置。当頁面的内容量、獨特性、可用性低于某個水平,搜尋引擎就可能把它当作無效地址處理——既不报错,也不收錄。
常见的几種软 404
- 空頁面與占位頁:分類下還没有商品、搜尋结果為空、篩選後没有任何匹配項,頁面框架還在,正文区域是空的。
- 内容极短:只有一句“敬請期待”或一張图片,没有任何可讀文本。
- 报错信息寫在正文里:程序捕获異常後返回 200,頁面正文寫着“该内容不存在”或“參數错誤”。
- 大量模板化重复:同一套模板套出成千上萬個地址,正文只有标题不同,其余完全一致。
- 跳轉失敗落到首頁:本该 301 的舊地址被统一重定向到首頁,用戶和蜘蛛都拿不到预期内容。
為什么它對收錄影响大
软 404 最麻烦的地方在于它不给出明确信号。真正的 404 會让蜘蛛快速放弃這個地址,把時間留给別處;软 404 則要求蜘蛛把頁面抓回来、渲染、分析,最後才判定無效。這一步的判断成本,是實實在在的抓取资源。
狀態碼说的是“這個請求被處理了”,頁面内容才决定“這個地址该不该留在索引里”。
如果站点里软 404 數量多,還會连带影响蜘蛛對整站的判断:一批地址反复被抓、反复被判定無效,站点的抓取效率會下降,新頁面被發現的速度也可能受影响。
怎么自查
- 打開索引覆盖率报告,看“已排除”里的软 404 條目,導出具体地址。
- 把這些地址按模板归類,看它們是不是集中在篩選頁、搜尋頁、空分類頁這几類。
- 抽样訪問几個地址,確認狀態碼是 200,正文是否為空或只有占位文本。
- 對照服務器日誌,看這些地址被反复抓取的频次,判断哪些值得優先處理。
處理顺序
不是所有软 404 都要立刻消灭,按影响面排序更實际:
- 先處理被大量抓取的模板頁,比如篩選參數组合出来的空结果頁。
- 内容确實不存在的地址,让程序返回 404 或 410,而不是 200。
- 临时没有内容的分類頁,可以先用 noindex 挡住,等有内容再放開。
- 重复模板頁收敛到主地址,用 canonical 指向真正该留的那一個版本。
- 舊地址迁移的,用 301 指到内容對應的新地址,別一律丢给首頁。
做完這些,再回到索引覆盖率报告观察一段時間。软 404 數量下降通常不是立刻發生的,需要等蜘蛛重新抓取、重新判断。關键是把頁面狀態和實际内容對齐:返回碼说實话,内容说實情,剩下的交给時間。