什么是软 404
软 404 指的是頁面實际已经不存在、或者内容已经被清空,但服務器仍然返回 200 狀態碼。訪問者看到的是一句“暂無内容”或者大片空白,而抓取程序讀到的是“這個地址正常,可以繼續来看”。两種信号對不上,問题就出在這里。
它和硬 404 的区別不在“頁面看起来空不空”,而在狀態碼和頁面實际可用性是否一致。
常见的几種触發场景
- 商品下架、文章刪除之後,模板仍然渲染出空壳頁面,标题還在、正文為空。
- 站内搜尋结果頁、篩選頁在没有命中结果时返回 200,只顯示一句“暂無相關内容”。
- 栏目頁因為内容被移走而變空,但栏目地址本身没有做任何處理。
- 後端把 404 统一處理成跳轉首頁,或者跳到一個提示頁,狀態碼却是 200 或 302。
- URL 拼错後,路由兜底到一個通用模板,任何不存在的路径都返回 200。
為什么它比硬 404 更麻烦
硬 404 是一個明确的信号:地址不存在,可以不再来了。软 404 给出的却是相反的暗示,抓取资源被持續花在永遠不會有内容的地址上。同时,用戶從搜尋或外鏈点進来,看到空白頁,体驗落差明顯;站点統計里這些地址還會被算作有效訪問,干扰後續判断。
判断软 404 的關键,不是頁面看起来空不空,而是狀態碼與頁面實际可用性是否一致。
自查步骤
- 整理一批已经刪除、下架、改名過的地址,做成清單。
- 用命令行工具逐個查看返回狀態碼,重点看响應里的第一行狀態碼字段。
- 同时把頁面打開,確認正文是否為空壳、是否只有模板框架。
- 做對比:狀態碼為 200、内容却為空的地址,就是软 404 候選。
- 額外抽查站内搜尋结果頁、空分類頁、空标簽頁這几類頁面。
- 翻一下服務器日誌,看這些地址被抓取的频次,判断影响范围有多大。
處理思路
确實不存在的地址
返回 404 或 410 都可以,410 表示永久刪除。選哪個看站点习惯,關键是不要再返回 200。
有替代地址的
用 301 指向最相關的現存頁面,而不是全部统一跳首頁。跳首頁對用戶帮助有限,也不利于理解站内结构。
暂时没有内容的頁面
如果只是暂时缺内容、之後會补上,可以考虑保留頁面,或者先用 noindex 挡住,等内容补齐再放開。要注意 noindex 和 404 是两種不同處理,不要混用。
搜尋與篩選结果頁
無结果时直接返回 404 未必合适。更常见的做法是仍返回 200 但加上 noindex,同时把頁面做得有出口,比如给出推荐内容或返回入口。
容易踩的坑
- 只在頁面上顯示“404”字样,狀態碼却依然是 200。
- 前端路由的單頁應用,所有路径都返回 200,由前端渲染出 404 頁面,服務端應配合返回對應狀態碼。
- CDN 或反向代理把错誤頁缓存下来,對外统一返回 200。
- 批量刪除内容时只清理了資料库,没有同步處理 URL 與跳轉規則。
日常怎么维持
把狀態碼检查放進常規動作里,比如每季度抽查一次刪除清單,或者在日誌中關注那些長期被抓到、却始终没有實际内容的地址。内容會持續下架,栏目會持續調整,软 404 属于會反复出現的類型,指望一次清理就永久干净並不現實。