硬 404 很容易發現:地址打不開,狀態碼就是 404。软 404 則相反——服務器返回 200,頁面模板完整、導航和頁脚都在,唯獨正文是空的,或者只剩一句「暂無内容」。對蜘蛛来说,這類地址看起来是正常頁面,于是被重复訪問、重复排队,却始终没有新内容产出。抓取配額是有限的,這類地址占得越多,留给真正值钱的頁面的机會就越少。
软 404 為什么比硬 404 更难處理
硬 404 是一個明确信号:這個地址不用再来了。而软 404 给出的是相反信号:這里是有效頁面。問题在于它既没有内容可供分析,也不會自動從索引里消失,只能靠人去發現和干预。更麻烦的是,它往往不是個別現象,而是某個模板或某個栏目配置的产物,一旦出現就是成批的。
常见的空壳頁面场景
- 内容被删但模板還在。文章下架後,詳情頁模板仍然渲染,正文位置留空,或者只顯示「该内容已不存在」。
- 空栏目與空分類頁。栏目建好了,内容還没填,列表頁就一直是空的。
- 無结果的篩選與參數頁。带參數的排序、篩選组合被訪問,但匹配不到任何结果,頁面照样返回 200。
- 占位頁與待建设頁。為了占位而生成的一批頁面,長期停留在「敬請期待」狀態。
- 正文只剩摘要或标题。列表頁能看到标题,点進去只有一两句话,實质信息接近于零。
怎么把這類地址找出来
- 從日誌入手。看哪些地址被蜘蛛反复訪問,但對應的頁面正文很短或為空。高频訪問加無内容,基本可以判定。
- 抽查站点地图。把站点地图里列出的地址和實际頁面内容對一遍,混進去的空頁要先清理掉。
- 批量检查狀態碼與正文長度。用抓取工具跑一遍主要栏目,重点看返回 200 但正文長度明顯偏低的地址。
- 看内鏈指向。站内有没有連結指向這些空頁?如果導航、相關推荐、面包屑還在往外輸送連結,需要一並處理。
- 给頁面加個判空逻辑。内容為空时,让程序自動走另一條狀態碼,而不是預設渲染空白模板。
按情况選擇處理方式
頁面上還有可替代的内容
比如文章被合並到了新頁面,或者栏目已经調整,就用 301 指到最相關的那一頁。指向首頁或随便一個上級頁面意义不大,最好让訪客和蜘蛛都能落到同一主题的内容上。
内容确實不再需要
如果這個地址以後不會再产生内容,返回 404 或 410 都比留着一個 200 的空頁面更清楚。410 更明确一些,但在實际使用中,404 已经足够表達「這里没有東西」。
内容只是暂时缺失
短期内會补上内容的,可以先設定 noindex,同时把它從站点地图和站内連結里撤下来,等内容补齐再放開。不要让它以空壳狀態長期挂在那里。
列表頁與篩選頁
空的列表頁、無结果的篩選组合,最好不要返回 200。可以返回 404,也可以在保持可用性的同时加上 noindex。核心判断标准很简單:這個地址對訪客有没有價值,如果没有,就不该给蜘蛛一個「可抓取」的信号。
把检查放進日常节奏
- 新栏目上线前,先確認有没有内容可填,没有就暂缓開放入口。
- 内容下架时,顺手確認一下狀態碼是不是按预期返回。
- 每季度抽一次主要栏目,看有没有新冒出来的空壳頁。
- 把「正文為空」作為上线的检查項之一,而不是等出了索引問题才回头找。
软 404 的處理思路和死鏈不太一样:死鏈是修地址,软 404 是修信号。让返回 200 的頁面都有實质内容,或者干脆不再返回 200,蜘蛛的每一次到訪才更有意义。
這件事不需要一次做完。先從被抓取最多、内鏈指向最多的那批空頁面開始,處理一批、观察一段時間,再處理下一批。比起追求數量上的彻底清理,稳定的持續维護更容易坚持。