有些页面从来没有返回过 404,服务器日志里状态码一直是 200,但在索引覆盖率报告里,它们却躺在“已排除”一栏,理由写着“软 404”。这种情况让人困惑:明明是正常响应的页面,为什么搜索引擎不认?
软 404 到底是什么
软 404 指的是:服务器返回的是成功状态码(通常是 200),但页面本身的内容、结构或用途,让搜索引擎判断它“等价于不存在”。判断依据不在状态码,而在页面实际给出的东西。
换句话说,状态码只说明请求被处理了,不说明这个地址值得在索引里留一个位置。当页面的内容量、独特性、可用性低于某个水平,搜索引擎就可能把它当作无效地址处理——既不报错,也不收录。
常见的几种软 404
- 空页面与占位页:分类下还没有商品、搜索结果为空、筛选后没有任何匹配项,页面框架还在,正文区域是空的。
- 内容极短:只有一句“敬请期待”或一张图片,没有任何可读文本。
- 报错信息写在正文里:程序捕获异常后返回 200,页面正文写着“该内容不存在”或“参数错误”。
- 大量模板化重复:同一套模板套出成千上万个地址,正文只有标题不同,其余完全一致。
- 跳转失败落到首页:本该 301 的旧地址被统一重定向到首页,用户和蜘蛛都拿不到预期内容。
为什么它对收录影响大
软 404 最麻烦的地方在于它不给出明确信号。真正的 404 会让蜘蛛快速放弃这个地址,把时间留给别处;软 404 则要求蜘蛛把页面抓回来、渲染、分析,最后才判定无效。这一步的判断成本,是实实在在的抓取资源。
状态码说的是“这个请求被处理了”,页面内容才决定“这个地址该不该留在索引里”。
如果站点里软 404 数量多,还会连带影响蜘蛛对整站的判断:一批地址反复被抓、反复被判定无效,站点的抓取效率会下降,新页面被发现的速度也可能受影响。
怎么自查
- 打开索引覆盖率报告,看“已排除”里的软 404 条目,导出具体地址。
- 把这些地址按模板归类,看它们是不是集中在筛选页、搜索页、空分类页这几类。
- 抽样访问几个地址,确认状态码是 200,正文是否为空或只有占位文本。
- 对照服务器日志,看这些地址被反复抓取的频次,判断哪些值得优先处理。
处理顺序
不是所有软 404 都要立刻消灭,按影响面排序更实际:
- 先处理被大量抓取的模板页,比如筛选参数组合出来的空结果页。
- 内容确实不存在的地址,让程序返回 404 或 410,而不是 200。
- 临时没有内容的分类页,可以先用 noindex 挡住,等有内容再放开。
- 重复模板页收敛到主地址,用 canonical 指向真正该留的那一个版本。
- 旧地址迁移的,用 301 指到内容对应的新地址,别一律丢给首页。
做完这些,再回到索引覆盖率报告观察一段时间。软 404 数量下降通常不是立刻发生的,需要等蜘蛛重新抓取、重新判断。关键是把页面状态和实际内容对齐:返回码说实话,内容说实情,剩下的交给时间。