有一类收录问题很隐蔽:URL 在索引里,点进去也能打开,状态码是 200,但页面里没有实质内容——可能是空结果的筛选页、已下架的商品页、过期的活动页、模板渲染失败留下的空壳,或者干脆只有一句“暂无数据”。这类页面通常被称为软 404:从协议层看它是正常页面,从内容层看它什么都不是。
为什么 200 的空壳页也会被收录
搜索引擎判断一个 URL 能不能进索引,不只看状态码。只要地址可访问、返回 200、页面有可解析的 HTML,并且有内链或 sitemap 把它送进来,它就有机会被抓取并进入候选池。后续是否留下,取决于页面能不能提供独立价值。
问题在于,空壳页往往成批出现。一次筛选、一次分页越界、一次商品批量下架,就可能产生几十上百个结构相同、内容为空的地址。它们彼此之间差异极小,又常常被站内链接指向,于是形成一批“看起来正常、实际没用”的收录。
先确认它到底是不是空壳
不要只看浏览器里的显示,前端渲染可能掩盖真实情况。
- 用抓取工具或直接请求源码,看服务端返回的 HTML 里有没有正文。
- 对比同一模板下的正常页面,看标题、正文、结构化数据是否都退化成默认值。
- 检查页面是否只是“条件不满足”的提示页,比如无库存、无权限、参数错误。
- 看状态码:200、404、410 分别对应完全不同的处理路径。
核对顺序
- 先分类,再动手。把这些 URL 分成三类:有等价替代页面的、彻底没有内容的、只是临时不可用的。三类处理方式完全不同,混在一起处理容易误伤。
- 核对服务端返回码。确认是真实 200 还是被前端或 CDN 改写过的 200。有些错误页会被框架统一包装成 200,这种情况要先修返回逻辑。
- 查抓取日志。看搜索蜘蛛最近一次访问这些地址时拿到的是什么状态、什么内容。如果蜘蛛拿到的是空模板,收录里出现空壳就不奇怪。
- 决定保留还是清退。有对应新页面的走 301 指向新地址;彻底没有内容的返回 404 或 410;只是暂时下架的,保留页面并补充说明,比留一个空白页更合适。
- 切断入口。处理完页面本身,还要检查 sitemap、站内列表、相关推荐、分页里是否还在推这些地址。入口不断,新的空壳还会继续产生。
- 观察退出节奏。状态码改完不代表立刻消失,索引清理需要时间。定期抽查即可,不要反复改动同一批地址。
几种常见处理方式的取舍
有等价替代内容
用 301 指向最接近的有效页面,并确保目标页确实能承接原来的需求。如果只是随便跳回首页,用户体验和搜索引擎的理解都会打折。
彻底没有内容
直接返回 404 或 410 是最干净的。410 表示永久移除,语义更明确。不要在 404 页面上放大量导航和正文,否则它本身又可能被当成正常页面。
临时不可用
短时间内会恢复的,保持页面可访问并给出说明,比来回切换状态码稳。频繁在 200 和 503 之间跳动,反而会让抓取判断变复杂。
容易漏掉的入口
- 筛选和排序参数的组合页,尤其是默认无结果的组合。
- 分页超出实际范围的尾页。
- 站内搜索的无结果页,如果它带独立 URL 且被外链引用。
- 旧版模板残留的地址,服务器仍然返回 200 和空白内容。
判断标准很简单:如果一个地址被用户打开后会立刻关掉,它大概率也不该长期留在索引里。
软 404 的难点不在技术,而在分类。同一批空壳页里,有的应该跳转,有的应该消失,有的应该保留。先花时间分清楚,再动手改状态码和入口,比一次性批量 404 更安全。改完之后,记得把注意力放回内容生产上——减少空壳页的产出源头,比事后清理更省事。