硬 404 很容易发现:地址打不开,状态码就是 404。软 404 则相反——服务器返回 200,页面模板完整、导航和页脚都在,唯独正文是空的,或者只剩一句「暂无内容」。对蜘蛛来说,这类地址看起来是正常页面,于是被重复访问、重复排队,却始终没有新内容产出。抓取配额是有限的,这类地址占得越多,留给真正值钱的页面的机会就越少。
软 404 为什么比硬 404 更难处理
硬 404 是一个明确信号:这个地址不用再来了。而软 404 给出的是相反信号:这里是有效页面。问题在于它既没有内容可供分析,也不会自动从索引里消失,只能靠人去发现和干预。更麻烦的是,它往往不是个别现象,而是某个模板或某个栏目配置的产物,一旦出现就是成批的。
常见的空壳页面场景
- 内容被删但模板还在。文章下架后,详情页模板仍然渲染,正文位置留空,或者只显示「该内容已不存在」。
- 空栏目与空分类页。栏目建好了,内容还没填,列表页就一直是空的。
- 无结果的筛选与参数页。带参数的排序、筛选组合被访问,但匹配不到任何结果,页面照样返回 200。
- 占位页与待建设页。为了占位而生成的一批页面,长期停留在「敬请期待」状态。
- 正文只剩摘要或标题。列表页能看到标题,点进去只有一两句话,实质信息接近于零。
怎么把这类地址找出来
- 从日志入手。看哪些地址被蜘蛛反复访问,但对应的页面正文很短或为空。高频访问加无内容,基本可以判定。
- 抽查站点地图。把站点地图里列出的地址和实际页面内容对一遍,混进去的空页要先清理掉。
- 批量检查状态码与正文长度。用抓取工具跑一遍主要栏目,重点看返回 200 但正文长度明显偏低的地址。
- 看内链指向。站内有没有链接指向这些空页?如果导航、相关推荐、面包屑还在往外输送链接,需要一并处理。
- 给页面加个判空逻辑。内容为空时,让程序自动走另一条状态码,而不是默认渲染空白模板。
按情况选择处理方式
页面上还有可替代的内容
比如文章被合并到了新页面,或者栏目已经调整,就用 301 指到最相关的那一页。指向首页或随便一个上级页面意义不大,最好让访客和蜘蛛都能落到同一主题的内容上。
内容确实不再需要
如果这个地址以后不会再产生内容,返回 404 或 410 都比留着一个 200 的空页面更清楚。410 更明确一些,但在实际使用中,404 已经足够表达「这里没有东西」。
内容只是暂时缺失
短期内会补上内容的,可以先设置 noindex,同时把它从站点地图和站内链接里撤下来,等内容补齐再放开。不要让它以空壳状态长期挂在那里。
列表页与筛选页
空的列表页、无结果的筛选组合,最好不要返回 200。可以返回 404,也可以在保持可用性的同时加上 noindex。核心判断标准很简单:这个地址对访客有没有价值,如果没有,就不该给蜘蛛一个「可抓取」的信号。
把检查放进日常节奏
- 新栏目上线前,先确认有没有内容可填,没有就暂缓开放入口。
- 内容下架时,顺手确认一下状态码是不是按预期返回。
- 每季度抽一次主要栏目,看有没有新冒出来的空壳页。
- 把「正文为空」作为上线的检查项之一,而不是等出了索引问题才回头找。
软 404 的处理思路和死链不太一样:死链是修地址,软 404 是修信号。让返回 200 的页面都有实质内容,或者干脆不再返回 200,蜘蛛的每一次到访才更有意义。
这件事不需要一次做完。先从被抓取最多、内链指向最多的那批空页面开始,处理一批、观察一段时间,再处理下一批。比起追求数量上的彻底清理,稳定的持续维护更容易坚持。