状态码说“正常”,内容却在说“没有”
服务器返回 200,页面也能打开,但正文几乎是空的——这类页面在搜索引擎眼里属于软 404。它和真正的 404 有本质区别:404 是明确告诉爬虫“这个地址的内容已经不存在了”,而软 404 传递的是互相矛盾的信号,爬虫只能自己判断,判断的代价是反复抓取、长期犹豫。
软 404 通常出现在哪些页面
- 筛选条件组合后没有结果的列表页,页面框架完整,商品或文章数为零;
- 站内搜索无结果时跳转到的提示页,仍以 200 返回;
- 已经下架、删除的详情页,被模板兜底成一个“暂无内容”的空壳;
- 程序异常时返回的占位页,把错误信息写进了正常页面模板;
- 列表页翻到超出范围的页码,例如第 500 页只有空列表。
它对抓取和收录的影响
首先是抓取资源的消耗。软 404 会被当成正常页面处理,爬虫可能在后续周期里一次次回来确认,这些请求本可以留给真正需要收录的 URL。其次是索引侧的取舍困难:页面既没有明确失效,又没有实质内容,搜索引擎可能选择不索引,也可能短暂索引后又移除,造成收录数据来回波动。
如果站内存在大量这类页面,它们还会稀释站点的整体质量判断。尤其当空页面和有效页面共用同一套模板、同一批内链时,爬虫很难只靠结构区分哪些值得留。需要说明的是,处理软 404 不会直接带来收录上的好处,它的价值在于减少无效抓取、让状态信号更干净。
怎么把它们找出来
- 抽样检查:从筛选页、下架详情页、搜索无结果页中随机取几条,看访问时返回的状态码和正文字数;
- 用抓取工具批量跑一遍,导出状态码为 200 但内容长度明显偏低的 URL;
- 对比收录状态报告,看是否有标题为空、描述为模板文案的异常条目;
- 查站内日志,观察那些被反复抓取、却始终没有产生索引变化的地址;
- 把结果按页面对应到具体模板,多数软 404 都能归到少数几个模板上。
处理方向:让状态码和内容说同一件事
判断标准很简单——这个页面以后还会不会有实质内容。不会再有的,直接返回 404,需要更明确信号时可用 410;只是暂时没有内容的,保留 200 但补上说明性文字,并视情况加 noindex;确实该保留的列表页,至少在无结果状态下给出替代内容或引导链接。
状态码是给爬虫看的结论,不是给用户看的提示。用户在页面上看到“没有结果”,爬虫也应该从状态码上读到同样的结论。
改完之后不需要期待立刻见效。抓取和索引判断都有周期,重点是把新信号稳定下来,再用一段时间的日志和索引报告去核对,而不是反复调整。