很多站点默认一个判断:页面能打开、状态码是 200,就具备了被收录的资格。实际排查中反复出现的一类问题恰恰相反——状态码没问题,页面也能正常访问,但正文几乎为空。搜索蜘蛛抓到了,甚至短暂进了索引,过一段时间又被剔除,收录状态来回摆动。这类页面通常被称为软 404 或空壳页面。
状态码只回答“能不能访问”
HTTP 状态码解决的是这个 URL 是否存在、服务器能否正常响应的问题。200 表示响应成功,它并不评价页面内容有多少价值。把状态码当成收录开关,是很多空壳页面被批量放开的起点。
软 404 与常见的空壳页面
软 404 指页面返回 200,但内容表达的是“没有找到”“暂无数据”“已下架”这类状态。常见的来源包括:
- 站内搜索无结果时,仍返回 200 并渲染一句“没有找到相关内容”。
- 筛选参数组合下没有匹配条目,页面框架完整、列表为空。
- 分页越界,翻到超出范围的页码,仍返回空白列表。
- 已下架商品的详情页,模板还在,正文只剩标题和一句提示。
- 由参数生成的重复视图,同一份内容被渲染成多个薄页面。
为什么它们会先收录后被剔除
抓取和索引是两件事。第一次抓取时,蜘蛛看到的主要是模板、导航和页脚,结构完整,容易先被判为正常页面;等页面真正进入索引、参与查询匹配时,几乎没有可用正文,于是被降权或移出。表现出来就是“已发现”“已编入索引”“已排除”之间来回变化。同时,这些 URL 还会持续占用抓取配额,让真正需要更新的页面排得更靠后。
自查顺序
- 从服务器日志中挑出返回 200、但响应体积明显偏小的 URL 样本。
- 对样本做渲染对比,确认浏览器里看到的内容与纯文本状态下的内容是否一致。
- 追溯这些 URL 的入口来源:来自内链、sitemap,还是站内搜索产生的参数链接。
- 对照索引状态报告的波动时间,看是否与这批 URL 的抓取记录吻合。
处理方式要分场景
- 内容确实不存在了:直接返回 404 或 410,不要再返回“友好提示页 + 200”。用 200 包装一个不存在的页面,只会让判断变得更难。
- 页面暂时为空但以后会有内容:比如刚建好还没上架的分类页,可以保留 200,但要保证有说明性正文和可用内链,避免纯空模板;短期不希望被收录时用 noindex 控制。
- 站内搜索结果页与参数组合页:这类 URL 数量容易失控,一般不建议放开抓取,可通过 robots.txt 或 noindex 收敛。
- 内容与别处重复:优先合并页面或补充差异化信息。canonical 只用来声明首选版本,不解决内容质量本身的问题。
状态码解决“能不能访问”,内容解决“值不值得收录”,两者不要混为一谈。
这类页面的处理不需要一次做完,但需要定期抽查。与其盯着收录总数的涨跌,不如先看增长的这批 URL 里,有多少是有真实内容支撑的。