服务器返回 200,蜘蛛顺利拿到 HTML,页面却没有实际内容——这种「状态码正常、内容为空」的情况,通常被称作软 404。它不像硬 404 那样直接告诉蜘蛛这个地址已经没了,而是让蜘蛛以为抓到了一个正常页面。对站点来说,代价是显性的:抓取配额被占、索引里堆着一批没有价值的 URL,而真正需要被发现的页面反而排不上队。
蜘蛛判断一个页面,靠的不只是状态码
软 404 的判定标准并不公开,但可以确定的是,蜘蛛会看页面主要区域有没有实质文本、是否属于模板化输出、是否和同栏目的其他页面高度相似、有没有明确的内容主体。空搜索结果页、空筛选页、已下架但仍返回 200 的详情页,都容易落进这一档。也就是说,抓取成功和页面值得保留,是两件不同的事。
哪些 URL 最容易变成软 404
- 站内搜索结果页:关键词没有命中时输出空列表,页面上只剩标题和搜索框。
- 组合筛选页:颜色、价格、尺码任意组合,绝大多数组合其实没有商品。
- 地区落地页:模板批量生成,但部分城市确实没有对应服务或库存。
- 已下架商品:URL 保留、模板还在、正文被清空,状态码依旧是 200。
- 翻过头的分页:列表只有 5 页,第 6 页起返回空列表,同样返回 200。
软 404 的成本体现在哪里
抓取预算是有限的。蜘蛛每次来访都要分配连接、消耗服务器资源,如果一批 URL 反复被抓却始终没有内容,这些访问就是纯支出。更麻烦的是,这类 URL 往往还有内链指向,或者仍留在 Sitemap 里,蜘蛛会定期回来复查,形成长期消耗。
- 无内容页面占用抓取额度,新页面上线后要等更久才被访问。
- 索引里保留着无效 URL,用户点进去看到的是空白页。
- 日志里的抓取量看着很高,但真正带流量的页面并没有增加。
处理思路:让状态码、内容和入口保持一致
该消失的就返回正确的状态码
商品永久下架、城市确实没有服务,这类页面更适合返回 404 或 410,而不是继续用 200 输出空壳。410 表示已永久移除,蜘蛛通常会更早停止回访。如果页面只是暂时缺货、内容几天内会恢复,那么保留 200 并给出替代推荐反而更合理。
空状态也可以做成内容
不是所有空页面都要删。搜索无结果时,可以提供相关关键词、热门内容、分类入口,让页面本身有信息量;筛选组合没有商品时,可以给出调整条件的提示,并链接到有结果的邻近组合。这样页面自己就有价值,不必急着返回 404。
用 noindex,而不是用 robots.txt 挡
如果希望蜘蛛不要索引但仍允许抓取,用 meta noindex 更合适。robots.txt 的 Disallow 会直接阻断抓取,蜘蛛看不到页面上的 noindex 信号,已经收录的 URL 也可能长期留在索引里。两者的作用层级不同,不要互相替代。
清理发现路径
软 404 页面如果还被内链指向、被 Sitemap 收录,蜘蛛就会不断回来。整理内链、把无内容 URL 从 Sitemap 中移除,比等待蜘蛛自然放弃要快。对于筛选参数,可以在生成链接时就限制组合数量,从源头减少空页面的产生。
怎么更快发现这些页面
- 抽样访问一批列表页和详情页,看主要区域是否有实际文本。
- 从日志里挑出被反复抓取、站内却没有入口指向的 URL,逐个检查。
- 核对 Sitemap 里的 URL 是否都返回有效内容,避免清单和实际状态脱节。
- 对批量生成的模板页做抽查,重点是地区页、标签页和组合筛选页。
状态码只说明这次请求处理成功,不代表这个 URL 值得留在索引里。蜘蛛最终按内容判断价值,站点要做的是让状态码、内容和发现路径三者对齐。
软 404 往往不是技术故障,而是运营问题:页面生命周期结束了,入口却没有同步关掉。把该 404 的 404、该补内容的补内容、该断的链断掉,抓取预算才会回到真正需要被发现的新页面上。