什么是软 404
软 404 通常指这样一种情况:页面实际上已经没有可用内容,可能是商品下架、文章删除、分类为空、搜索无结果,但服务器对访问请求仍然返回 200 状态码。对用户来说看到的是一个空页面或提示页,对蜘蛛来说却像是正常返回的页面。如果站点里这类 URL 数量较多,它们会占用抓取资源,也可能混进索引,影响索引质量。
它和真正的 404 区别在于状态码。真正的 404 是服务器明确告诉蜘蛛“这个地址没有内容”,而软 404 是把“没有内容”包装成了一次正常响应。
软 404 为什么会被收录
蜘蛛判断一个页面是否值得索引,会综合看状态码、正文内容、内链、页面模板等信号。状态码是其中比较直接的一环。当 URL 返回 200 时,蜘蛛会按正常页面进入后续流程,再去判断内容是否足够。如果页面虽然空,但模板里还有导航、推荐位、版权信息,蜘蛛可能把它当成一个普通页面处理。
- 已下架的商品页、已删除的文章页,状态码没有同步修改。
- 筛选和排序参数组合出的结果页,组合无结果时仍返回 200。
- 站内搜索无结果页,地址可被外部访问和抓取。
- 分页越界,例如第 100 页实际没有数据,却仍返回 200。
- 空分类、空标签、空作者页,只有模板框架没有条目。
- 前端路由接管后,找不到内容也统一返回 200。
这些 URL 一旦被内链或站点地图暴露,就更容易被蜘蛛发现。发现之后能不能进索引,还要看后续判断,但返回 200 至少让它有了被处理的可能。
识别软 404 的几个入口
状态码和页面内容对照
不要只看状态码,也不要不看状态码。可以抽取一批可疑 URL,用命令行或抓取工具访问,记录返回码、页面标题、正文长度、是否包含关键词。如果返回 200,但正文只有提示语和模板内容,就可能是软 404。服务器访问日志里也能看到蜘蛛反复抓取同一类空页面,这时值得回去检查模板逻辑。
索引报告与搜索表现
索引报告不一定直接标出软 404,但可以看到一些间接信号,比如页面被收录却没有摘要,或者标题由模板拼成。也可以在站内搜索里观察,不过结果受多种因素影响,只能作为参考。更可靠的做法还是回到页面本身:这个 URL 对用户是否还有价值。
处理顺序可以这样排
- 先确认页面是否还有保留价值。如果内容只是暂时下架,后续会恢复,可以先保留页面,但要给出明确提示,并避免让蜘蛛抓取空状态。
- 确认无保留价值的,返回 404 或 410。404 表示未找到,410 表示已删除。两者都能让蜘蛛更快理解页面已失效,不必再反复抓取。
- 如果页面需要保留但内容不足,优先补内容。合并到相近主题、补充有效信息,比直接留一个空壳更合适。
- 无法立即删除的,再考虑 noindex。noindex 可以让页面退出索引,但页面仍可能被抓取。要确认 noindex 对蜘蛛可见,不要被 robots.txt 屏蔽掉。
- 清理内链和站点地图。把指向软 404 的链接去掉或改为有效地址,站点地图中也不要保留已经失效的 URL。
- 观察抓取和索引变化。处理之后不会立刻生效,需要给蜘蛛一些时间重新抓取,再从日志和索引报告中确认。
不要把 noindex 和 404 混着用。如果页面已经决定删除,返回 404 通常比长期挂着 noindex 更直接;如果页面还要保留给用户访问,就优先修状态码和内容,而不是只加 noindex。
几个容易踩的坑
- 用 robots.txt 屏蔽软 404 页面,结果蜘蛛看不到 noindex,索引状态反而更难清理。
- 前端路由统一返回 200,服务端无法区分页面是否存在。
- CDN 或安全防护把源站的 404 改写成了 200。
- 只处理了页面模板,没有清理内链,蜘蛛仍然不断发现新的空 URL。
- 把筛选页全部保留,但组合结果为空时仍返回 200。
小结
软 404 的核心问题是状态码与实际内容不一致。处理时不必急着追求一次清理干净,可以先从数量集中、内链明显的空页面入手:确认价值,修正状态码,清理入口,再看索引变化。对站点来说,让蜘蛛把抓取用在有内容的页面上,比单纯追求索引数量更重要。