有一類頁面在日誌和抓取工具里看起来一切正常:狀態碼 200,抓取成功,没有跳轉,也没有报错。但真正打開时,要么是一片空白模板,要么寫着“暂無内容”“參數错誤”。搜尋引擎會按正常頁面處理它,于是這些地址可能被收錄、進入索引,甚至占着索引配額不放。這類情况通常被称為软 404。
软 404 和真 404 的差別在哪
真 404 返回的是 404 或 410 狀態碼,搜尋引擎能明确判断這個地址已经失效,會逐步把它從索引里清掉。软 404 返回的却是 200,等于在说“這個頁面是好的”,只是内容碰巧是空的。信号和事實不一致,麻烦就出在這里。
對抓取来说,這是一個正常頁面;對用戶来说,這是一個死頁面。两者的判断被拆開了,收錄结果自然就會偏离预期。
常见的几種来源
- 商品下架、内容刪除後,模板照常渲染,只是内容区為空;
- 站内搜尋、篩選、分頁在無结果时,依然輸出一個空列表頁;
- 資料库讀取失敗,程序捕获異常後返回“出错了”頁面,狀態碼仍是 200;
- 栏目改版後舊路径没有做跳轉,直接渲染成一個空壳;
- 需要登入的頁面,未登入时返回登入提示頁,同样是 200。
為什么值得優先處理
一是它會稀释索引质量。大量空頁混在索引里,同站其他有效頁面的判断也會受影响。二是它會浪費抓取額度,尤其当這些地址通過 sitemap 或站内連結成批暴露时,抓取工具會反复来。三是排查收錄問题时,如果不先把這批頁面摘出去,後面的判断很容易被带偏。
排查顺序
- 先核對狀態碼和正文是否一致。抽一批“看起来正常”的 URL,看返回碼,再對比渲染後的正文長度、标题和主要区块是否為空。
- 再看這批地址是怎么被發現的。来自 sitemap、内鏈還是外鏈,决定了收口时要改哪一层,只改頁面本身往往不够。
- 然後分類。是永久失效、临时無内容,還是内容其實存在但没渲染出来,三類處理方式完全不同。
- 最後才决定動作,並同步清掉来源入口。
處理方式按類型選
- 内容永久不存在:返回 404 或 410,同时從 sitemap 和内鏈里去掉;
- 内容有替代地址:301 到新地址,一步到位,不要串成多跳;
- 參數非法但頁面本身有效:回到正常頁面或返回 404,不要让空模板繼續輸出;
- 需要登入才能看的内容:考虑限制抓取或加 noindex,而不是让它以 200 空頁被收錄。
两個容易忽略的点
第一,监控不要只看 5xx。真正麻烦的往往是狀態碼 200 但正文极短或命中“出错”“無權限”這類模板的頁面,可以按這個條件做告警。
第二,改完不會立刻见效。抓取會先變,索引的清理通常更慢,观察周期要留够,期間別因為看不到變化就反复改配置。
判断标准其實只有一句:頁面返回的狀態碼,要和用戶真正看到的内容一致。不一致的地方,就是問题所在。