蜘蛛眼里的“空”有三种含义
同一句“这页没东西”,对蜘蛛来说区别很大。它先看 HTTP 状态码,再看响应体里有没有可用内容,最后才判断这个 URL 值不值得再来。
真 404 / 410:状态码明确,响应体是一个错误提示页。蜘蛛读到状态码就停止解析,不会把页面当正常内容处理,也不会继续往里挖链接。
软 404:状态码返回 200,但页面没有实质内容。可能是空列表、搜索无结果、商品下架后留下的模板壳,或者只有一句“暂无数据”。蜘蛛拿到的是 200,就会按正常页面处理。
200 的空壳:页面有标题、有导航、有页脚,正文区域却是空的。这种最容易被忽略,因为从状态码和模板上看一切都正常。
软 404 通常是怎么产生的
- 筛选或搜索参数被静态化,生成了大量无结果的组合页。
- 商品、文章下架后只删了数据,模板还照常渲染。
- 分页超出最大页数,仍然返回 200 和一个空列表。
- CMS 的错误页配置成 200,读者看到的是“内容不存在”。
- URL 被改动但没做跳转,新路径能打开,只是没有内容。
蜘蛛接下来会做什么
软 404 最直接的代价是抓取额度的浪费。蜘蛛按“这里可能有内容”的判断进来,消耗了一次请求,最后什么也没拿到。几次之后,它会把整类 URL 的抓取频次降下来,包括那些本来正常的列表页。
另一个影响是内容质量的判断。大量 200 的空页会让站点整体被看作低价值来源,正常页面的重新抓取也可能被拖慢。日志里常见的表现是:这些 URL 反复被抓,但展现和排名一直没有变化。
如果空页面之间还互相链接,或者分页一直往下翻,蜘蛛还可能沿着空列表越走越深,把有限的抓取预算耗在深处。
软 404 不是“页面出错”,而是“页面还在,但没有价值”。对蜘蛛来说,这两种情况的处理方式完全不同。
排查顺序
- 从日志里筛出被抓取次数最多、但内容量最小的 URL 模式,比如带筛选参数或带 page= 的路径。
- 用 curl 或关闭缓存的浏览器直接请求这些 URL,确认状态码和响应体长度,别只看页面在浏览器里长什么样。
- 统计这些 URL 的占比。如果超过全站被抓 URL 的两成,就需要优先处理。
- 检查模板层,确认是数据为空还是判断写错,导致空内容也渲染出完整框架。
- 回到内链和 Sitemap,看这些 URL 是从哪里被带进来的。
处理原则
有内容的页面保留,没内容的页面给出明确信号。筛选结果为空时,返回 404 比返回 200 空页更干脆;如果这个组合以后可能还有内容,至少加上 noindex。永久下架的页面用 410,比 404 更明确。分页超出范围直接 404,不要让用户和蜘蛛一直翻下去。
别用跳转把所有空页都导向首页。这样做会把首页变成大量 URL 的共同落脚点,蜘蛛看到的是同一个页面被反复指向,反而浪费更多抓取资源。
小结
软 404 属于那种平时不显眼、积累起来很消耗的问题。定期从日志里拉一遍内容量为零但被抓取频繁的 URL,配合状态码检查,基本就能把大部分问题定位出来。处理完之后再看一次抓取分布,通常能看到正常的落地页开始拿到更多请求。