搜索抓取

软 404:返回 200 的空壳页面,蜘蛛会怎么处理

服务器返回 200,页面也能正常打开,但正文只有一句“已下架”或“暂无数据”,这类页面会被蜘蛛当成有效 URL 抓回去。本文说明软 404 的常见来源、蜘蛛拿到 200 之后的处理路径,以及按资源实际情况分别用 404、410、noindex 或补内容来收拾的做法。

搜索抓取

软 404:返回 200 的空壳页面,蜘蛛会怎么处理

服务器返回 200,页面看起来也能正常打开,但正文里只有一句“该商品已下架”或“没有找到相关内容”——这类页面在蜘蛛眼里属于典型的软 404。它和真正的 404 的区别不在于用户看到什么,而在于 HTTP 状态码告诉了抓取程序什么。

状态码是蜘蛛判断一个 URL 生死的第一手信号。200 意味着“这个地址有一个可用资源”,于是它会把正文抓回去、送进后续处理流程;至于内容有没有意义,要等到更后面才判断。当站点里存在成批这样的空壳页时,被占用的抓取额度是实打实的。

常见的软 404 来源

  • 商品、房源、职位等条目下架后,模板还在,200 照常返回
  • 站内搜索结果页、筛选组合页在没有匹配结果时渲染出的空列表
  • 分类目录下没有任何内容时的空分类页
  • 分页参数越界,例如实际只有 5 页却请求第 50 页,页面显示“暂无数据”
  • 错误处理写成统一的“友好提示页”,把所有异常都用 200 兜住
  • CMS 默认生成的标签页、作者页、日期归档页,长期没有对应内容

蜘蛛拿到 200 之后会怎么走

它不会立刻把页面判定为无效。通常的路径是:抓取 HTML、解析正文、抽取链接,再交给索引环节评估。评估时,空壳页会面临几种结果:正文过短、与其他页面高度雷同、没有独特信息,于是不被保留;如果这类页面数量很大,站点在内容有效性上的整体表现也会被拖累。更麻烦的是链接抽取——很多空壳页的侧边栏和推荐位仍然输出大量链接,蜘蛛会顺着这些链接继续爬,把预算花在与内容无关的路径上。

分开处理比统一处理更有效

确实已经不存在的资源

返回 404;如果确定是永久移除,410 表达得更明确。不要用 200 加一句提示语来“安抚”访问者,这对用户和蜘蛛都没有好处。用户侧可以在页面上给出替代入口,但状态码要如实。

暂时缺内容但页面想保留

例如断货商品。保留 URL 是可以的,但页面不能只有一句话。补充同类替代、规格参数、相关说明,让它仍然是一个有信息的页面。如果预计长期无内容,考虑把权重合并到上级分类并做 301。

搜索结果页与筛选组合页

这类页面数量可以近乎无限,且大多没有独立价值。常见做法是在页面上加 noindex,让它们不进入索引,同时仍然允许抓取——noindex 需要蜘蛛先抓到页面才会生效。如果连抓取都不希望发生,再用 robots.txt 的 Disallow 拦,但要注意拦掉之后 noindex 也会一并失效。

分页越界

参数超出实际页数时,直接返回 404 或 301 回到最后一页,比渲染一个空列表更清楚,也不会让蜘蛛反复试探不存在的页码。

怎么排查

  • 看抓取日志中 200 响应的分布,找出哪些路径下集中出现短页面模板
  • 抽样统计页面正文字数,与同类正常页面的均值做对比
  • 检查错误处理中间件,确认异常没有被统一包装成 200
  • 检查翻页、筛选参数是否设置了上界,避免任意参数都能生成页面
  • 站长工具里如有软 404 相关报告,可以拿来交叉验证
修复软 404 往往不是改一个状态码,而是先决定这个 URL 到底还应不应该继续存在。