有些页面点开是能打开的,服务器返回 200,导航、页脚、样式一应俱全,唯独主体区域是空的:筛选条件没有匹配结果、搜索词没有命中、商品已经下架、活动已经结束。这种页面在用户眼里是「没东西可看」,在搜索引擎眼里却是一个正常响应、可以被抓取的 URL。它进入索引的过程通常悄无声息,等到发现时,索引里已经积了一堆没有内容的地址。这就是常说的软 404。
软 404 和硬 404 的区别
硬 404 是服务器明确告诉蜘蛛「这个地址不存在」,返回 404 或 410 状态码。蜘蛛收到之后,通常不会把它放进索引,已经收录的也会逐步移除。
软 404 不一样:页面返回 200,内容却是空的,或者只剩下几句没有信息量的说明。蜘蛛要先把页面抓下来、渲染、提取正文,才能判断这条 URL 有没有可索引的东西。判断发生在抓取之后,而不是请求的那一刻,所以这些页面有机会先被收进去,再慢慢被清理,中间存在一段滞后期。
返回 200 不代表页面有价值。状态码只说「我还在」,不说「我有什么」。
这些空页面通常从哪里来
- 筛选、排序、价格区间组合之后没有结果,但仍生成一个可访问地址
- 站内搜索的查询词没有命中,搜索结果页照样返回 200
- 商品、房源、职位等内容下架,详情页保留模板但主体为空
- 活动、专题结束,页面只剩标题和一句结束语
- 分页参数超出实际页数,例如 page=99 依然能打开
- 参数被外部拼接后生成的半成品页面
为什么它会被收录
一是模板完整。导航、页脚、推荐位都在,蜘蛛看到的不是空白 HTML,而是一个结构齐全的页面,容易当成有效内容处理。
二是内部链接在给它投票。列表页翻到空页、筛选结果里出现空页,链接结构依然存在,蜘蛛顺着链接反复访问,反而加深了印象。有些站点的筛选与分页链接是自动生成的,参数组合数量很大,等于批量制造空 URL。
三是它曾经有内容。商品下架、活动结束之前,这些 URL 是正常页面,索引里本来就有记录。内容消失之后,索引不会立刻同步,页面会在「已收录但主体为空」的状态里停留一段时间。
自查:怎么发现站内的软 404
不需要复杂工具,几个动作就能摸出大概:
- 从索引状态报告或站点查询里抽出疑似空页的样本,逐个打开确认主体内容
- 翻访问日志,找那些被蜘蛛反复抓取、但用户访问很少的模板化地址
- 检查搜索、筛选、分页这几类页面,看参数组合有多少、是否都返回 200
- 看站内搜索的查询记录,没有结果的词会生成哪些地址
处理顺序
优先级从高到低:
- 能返回 404 的就返回 404。内容确实永久不存在的,直接给 404 或 410,比任何补救都干净
- 页面要保留但内容确实为空,加 noindex。注意 noindex 需要页面处于可抓取状态才生效,别同时用 robots.txt 屏蔽
- 空页能找到对应有效页的,把用户和蜘蛛引过去。例如无结果时展示同类推荐或热门内容,让页面重新有主体
- 清理内链和站点地图。不再指向这些地址,减少蜘蛛反复访问
- 看参数源头。如果能从生成规则上限制无意义组合,比事后一条条清理省力得多
几个容易踩的坑
- 用 302 跳走但保留原地址:跳转不等于删除,旧地址可能长期停在索引里
- 把空页统一跳首页:大量不同 URL 指向同一目标,容易演变成另一种形式的问题页
- noindex 和 robots 同时上:robots 挡住了抓取,noindex 也就没机会被读到
- 站点地图里把参数页一并提交:等于主动告诉蜘蛛「这些也请抓」
软 404 的关键不在「删得快」,而在「别让它一直生成」。抓取与收录之间天然有滞后,控制来源比事后清理轻松。定期抽查一次空结果页、下架页和筛选页,比等索引报告出来再动手更划算。