搜索抓取

状态码 200 的空壳页:软 404 怎样一点点消耗抓取预算

服务器返回 200,正文却是空的——这类软 404 页面会被蜘蛛当成正常 URL 反复访问。本文梳理它们常见的生成来源、对抓取预算与内链的实际影响,以及从状态码、内链和 Sitemap 三处做清理的具体步骤,并区分内容简短与软 404 的边界。

搜索抓取

状态码 200 的空壳页:软 404 怎样一点点消耗抓取预算

什么是软 404:状态码说“在”,内容说“不在”

软 404 指服务器返回 200,页面本身却没有实质内容:模板在、导航在、页脚在,正文区域却是空的,或者只写一句“暂无相关结果”“该商品已下架”。对用户来说这是一次无效访问;对蜘蛛来说,这是一个“看起来存在”的 URL,会被记入抓取清单,并在之后的调度里被反复访问。

它们通常从哪几个口子冒出来

  • 筛选与参数组合:颜色 × 尺码 × 价格区间,几十种组合里只有少数有货,其余组合照常生成页面。
  • 站内搜索结果页:没有命中关键词时仍然返回 200,并留下一个可被抓取的 URL。
  • 分页越界:列表只有 3 页,参数写成第 50 页依然能打开,只是列表为空。
  • 已下架内容保留模板:商品或文章删除后,URL 继续返回 200,正文替换成“内容已移除”。
  • 渲染失败的空壳:依赖前端接口取数的页面,在超时或异常时返回的是一个等待数据的空容器。

它消耗的不只是抓取次数

  • 抓取预算:每访问一个空壳页,就少一次访问真正需要更新的页面。
  • 再抓取机会:空壳页可能被当作“内容稀少但可访问”,进入常规调度,长期占用请求。
  • 内链权重:列表页和相关推荐把链接给了空壳页,这些入口本可以指向有效页面。
  • 整体判断:大量结构相似、内容雷同的空壳页,会影响蜘蛛对站点内容密度的评估。
判断标准不是“页面内容少”,而是“页面没有提供它声称提供的内容”。联系页只有三行字,不算软 404;商品页只剩一句“已下架”,算。

怎么把它们找出来

靠翻几个页面是不够的,需要一份可以定期跑的清单。

  1. 用站点爬取工具把全站 URL 拉一遍,导出状态码、响应字节数、正文文本长度。
  2. 按字节数排序,重点看那些状态码为 200 但正文极短的 URL。
  3. 与服务器日志对照:这些 URL 是否被蜘蛛反复访问。
  4. 确认它们是否出现在 Sitemap 或被内链主动推荐。

把状态码、字节数和日志访问次数放进同一张表,比单独看任何一项都更容易定位问题。

处理方式:要么承认它不存在,要么做成真正的页面

让它返回正确的状态码

确定不会再提供的内容,返回 404 或 410 是更干净的表述。不必过度期待状态码变化本身能带来什么额外收益,关键是不再让蜘蛛把它当成正常页面处理。切忌用 200 加一句“抱歉,没找到”来伪装。

给它实质内容

如果这个 URL 有搜索需求或外链,把它做成有用的页面:补足说明、提供替代内容、给出同类推荐链接。这通常比直接删掉更划算,但前提是真的有内容可写。

从源头减少生成

  • 筛选结果为空时,不再输出可被抓取的链接,或把参数组合收敛到有限集合。
  • 分页超出范围返回 404,而不是空列表。
  • 站内搜索结果页一般不开放抓取;若要屏蔽,优先考虑 noindex 而不是 robots.txt——被 robots 拦截的 URL 若仍有内外链,仍可能以无摘要形式出现。

内链与 Sitemap 的同步清理

页面状态改了、链接没改,蜘蛛还是会被引过去。改完状态码之后,检查三处:列表页与相关推荐是否还挂着死链;Sitemap 是否仍包含这些 URL;标签聚合或站内搜索页是否还在自动生成指向它们的链接。撤链接和改状态码,两件事要一起做。

最后一点:别把“内容少”全判成软 404

关于页、联系方式、隐私政策这类页面内容天然简短,但它们正是用户会主动寻找的页面,并不需要更多文字。软 404 的核心特征是“承诺了内容却不提供”,而不是字数少。把这条线划清楚,清理时才不会误伤真正该保留的页面。