搜索抓取

空页面、软 404 与 404:蜘蛛遇到无内容 URL 后会怎么处理

蜘蛛遇到没有内容的页面时,会先看状态码,再看响应体。真 404、软 404 和 200 空壳的处理方式完全不同。本文拆解软 404 的常见成因、它对抓取频次与索引的影响,并给出一套从日志到模板层的排查顺序,减少无谓的抓取消耗。

搜索抓取

空页面、软 404 与 404:蜘蛛遇到无内容 URL 后会怎么处理

蜘蛛眼里的“空”有三种含义

同一句“这页没东西”,对蜘蛛来说区别很大。它先看 HTTP 状态码,再看响应体里有没有可用内容,最后才判断这个 URL 值不值得再来。

真 404 / 410:状态码明确,响应体是一个错误提示页。蜘蛛读到状态码就停止解析,不会把页面当正常内容处理,也不会继续往里挖链接。

软 404:状态码返回 200,但页面没有实质内容。可能是空列表、搜索无结果、商品下架后留下的模板壳,或者只有一句“暂无数据”。蜘蛛拿到的是 200,就会按正常页面处理。

200 的空壳:页面有标题、有导航、有页脚,正文区域却是空的。这种最容易被忽略,因为从状态码和模板上看一切都正常。

软 404 通常是怎么产生的

  • 筛选或搜索参数被静态化,生成了大量无结果的组合页。
  • 商品、文章下架后只删了数据,模板还照常渲染。
  • 分页超出最大页数,仍然返回 200 和一个空列表。
  • CMS 的错误页配置成 200,读者看到的是“内容不存在”。
  • URL 被改动但没做跳转,新路径能打开,只是没有内容。

蜘蛛接下来会做什么

软 404 最直接的代价是抓取额度的浪费。蜘蛛按“这里可能有内容”的判断进来,消耗了一次请求,最后什么也没拿到。几次之后,它会把整类 URL 的抓取频次降下来,包括那些本来正常的列表页。

另一个影响是内容质量的判断。大量 200 的空页会让站点整体被看作低价值来源,正常页面的重新抓取也可能被拖慢。日志里常见的表现是:这些 URL 反复被抓,但展现和排名一直没有变化。

如果空页面之间还互相链接,或者分页一直往下翻,蜘蛛还可能沿着空列表越走越深,把有限的抓取预算耗在深处。

软 404 不是“页面出错”,而是“页面还在,但没有价值”。对蜘蛛来说,这两种情况的处理方式完全不同。

排查顺序

  1. 从日志里筛出被抓取次数最多、但内容量最小的 URL 模式,比如带筛选参数或带 page= 的路径。
  2. 用 curl 或关闭缓存的浏览器直接请求这些 URL,确认状态码和响应体长度,别只看页面在浏览器里长什么样。
  3. 统计这些 URL 的占比。如果超过全站被抓 URL 的两成,就需要优先处理。
  4. 检查模板层,确认是数据为空还是判断写错,导致空内容也渲染出完整框架。
  5. 回到内链和 Sitemap,看这些 URL 是从哪里被带进来的。

处理原则

有内容的页面保留,没内容的页面给出明确信号。筛选结果为空时,返回 404 比返回 200 空页更干脆;如果这个组合以后可能还有内容,至少加上 noindex。永久下架的页面用 410,比 404 更明确。分页超出范围直接 404,不要让用户和蜘蛛一直翻下去。

别用跳转把所有空页都导向首页。这样做会把首页变成大量 URL 的共同落脚点,蜘蛛看到的是同一个页面被反复指向,反而浪费更多抓取资源。

小结

软 404 属于那种平时不显眼、积累起来很消耗的问题。定期从日志里拉一遍内容量为零但被抓取频繁的 URL,配合状态码检查,基本就能把大部分问题定位出来。处理完之后再看一次抓取分布,通常能看到正常的落地页开始拿到更多请求。