搜索抓取

软 404:页面返回 200,内容却已经空了

有些地址状态码是 200,服务器也正常响应,但页面已经没有实质内容,比如下架的商品、空分类和零结果的筛选页。这类软 404 会占用抓取资源、打断内链路径,也影响用户点击后的体验。文章梳理它常见的来源、判断思路,以及按场景选择 404、301、noindex 的处理方式,并说明怎么和 Sitemap、内链配合。

搜索抓取

软 404:页面返回 200,内容却已经空了

站点运营里有一类页面很难被察觉:状态码明明是 200,服务器也正常响应,但页面本身已经没有实质内容。下架的商品、空了的产品分类、搜索结果为零的列表页,都属于这一类。对用户来说这是一个死胡同,对蜘蛛来说则是一个看起来有效、实际上没什么价值的地址。

软 404 通常出现在哪些页面

  • 商品或内容下架,详情页模板仍在,正文区域留空或只剩推荐位
  • 筛选参数组合出没有结果的列表页
  • 某个分类下的内容被全部删除,分类页只剩标题和导航
  • 分页翻过末尾,超出实际页数的页码仍然返回 200
  • 依赖前端渲染的页面,脚本执行后内容区域是空的

蜘蛛看到的是什么

蜘蛛判断一个地址有没有价值,主要依据响应状态、正文内容量,以及这个页面和站内其他页面的重合程度。当某个 URL 返回 200,但正文几乎是同一套模板,和站内几十个页面高度相似时,这个地址就很难被当作有独立价值的页面。它可能被反复抓取,也可能被标记为软 404 并逐步从索引中淡出。具体行为由各搜索引擎自己决定,这里只能说方向。

一个返回 200 的空页面,消耗的抓取资源和一次正常抓取是一样的,但产出的价值接近于零。

为什么值得处理

  • 抓取配额被无效 URL 占用,真正需要更新的页面可能排得更靠后
  • 内链指向空页面,蜘蛛走过去之后无路可走,路径在这里中断
  • Sitemap 里如果混入这类地址,会给抓取调度提供错误信号
  • 用户从搜索结果点进来看到空白,体验同样受影响

分场景的处理方式

确实不该再存在的页面

内容已经永久删除,且没有等价替代页面的,返回 404 或 410 是清晰的表达。410 表示永久移除,语义更明确;用 404 也可以,关键在于不要让模板继续输出 200。

暂时缺货或临时下架

如果内容过一段时间会回来,保留 URL 并返回 200 是合理的,但页面应当给出明确说明,比如预计恢复时间、同类替代推荐,让页面本身有内容可读,而不是留一片空白。

筛选参数组合出的空结果

这类地址往往由参数无限组合产生。可以让无结果的组合返回 404,也可以用 robots.txt 屏蔽参数模式,或者对这类页面加 noindex。几种做法选一种并保持一致,比混用更容易维护。

需要把空结果页合并到上级分类的,用 301 指向有内容的页面,同时更新内链,不要让旧的空链接继续挂在导航或列表里。

与 Sitemap、内链的配合

Sitemap 是站点主动提交的地址清单,应当只放有内容的规范 URL。如果 Sitemap 里长期存在返回 200 的空页面,等于持续把蜘蛛引向无效地址。内链同理,列表和导航里的链接应当指向真实存在的目标,页面下线后要及时清理对应入口。

怎么发现这些页面

  • 在服务器日志里筛选响应码为 200、但响应体积明显偏小的 URL
  • 抽样访问分类页、翻页和参数组合,确认内容区域是否有实质信息
  • 查看搜索引擎后台的覆盖率或索引报告,关注被标记为软 404 的地址
  • 结合内链清单,定期核对链接指向的页面是否还有内容

这类问题通常不是清理一次就结束。内容下架、参数变化、模板调整都会不断产生新的空页面,把它纳入常规的站点健康检查,比等到抓取出问题再回头排查要省力得多。

软 404 的核心矛盾在于状态码和内容不一致。让状态码如实反映页面状态,让 Sitemap 和内链只指向确实存在的页面,是减少无效抓取最直接的一步。