有一类页面很尴尬:它能正常打开,状态码是 200,但正文里没有任何实质内容——商品早就下架了,模板还在;活动结束了,只剩空壳;站内搜索没有结果,页面上只有搜索框和一句提示。这类页面在技术上不算 404,在蜘蛛眼里却和空页面差别不大,通常被称为软 404。
软 404 常见的几种样子
- 商品、房源、职位下架后,详情页模板仍返回 200,只是内容区为空或只剩一句已下架。
- 站内搜索无结果页,返回 200,页面没有可读内容。
- 分类页、标签页下的条目被撤空,地址依然有效。
- 内容已被删除,页面只显示内容不存在,状态码却是 200。
- 地区、语言或分站判断失败,返回了空白默认模板。
蜘蛛看到的是一个有效页面
蜘蛛判断一个 URL 值不值得继续抓,主要依据两件事:状态码和抓到的内容。状态码 200 意味着请求成功,URL 是活的;内容单薄则会让它对这个页面的价值打折扣。不同搜索引擎的具体处理并不一致,有的会在站长后台把这类页面标出来,有的直接按低质量页面降权处理,但共同点是:它不会像 404 那样快速退出抓取队列。
更麻烦的是,如果页面内容会随着数据变动(比如库存数、价格标签),蜘蛛可能认为它一直在更新,从而安排更频繁的回访。
为什么它会持续消耗抓取资源
- 内链仍然指向它,蜘蛛每次巡检都要走一遍。
- Sitemap 里还列着它,等于定期提醒蜘蛛来抓。
- 它不会被当作失效地址快速收敛,反而可能因为细微变动被反复回访。
- 站内链接价值被引向没有内容的页面,真正需要被抓的页面少了一次被走到的机会。
处理思路:让状态码和内容保持一致
- 先分清永久删除还是暂时缺货。内容彻底不要了,返回 404 或 410,同时清理内链和 Sitemap 中的入口;只是暂时缺货、以后还会上架的,保留页面并给出替代推荐,这属于正常页面,不必删。
- 站内搜索无结果页加 noindex。很多站的问题不在于无结果页本身,而在于它被别处链接引用,甚至进了 Sitemap。
- 空分类、空标签页做合并或关闭。条目撤空后,重定向到上级分类,或不再暴露入口,不要留一个空壳地址。
- 不要用 200 掩盖错误。程序异常、数据取不到时返回正常模板,会让蜘蛛把一次错误当成一次正常抓取记录下去。
怎么把软 404 找出来
搜索引擎的抓取统计里通常会有相关提示,可以先看这一项。服务器日志里也能看出线索:同一批 URL 被反复抓取、返回 200,但响应体积明显小于同模板的平均值。更简单的办法是定期抽样,把返回 200 的 URL 按正文长度排序,看看有没有一批页面长期处于几乎没有内容的状态。
清理这类页面不需要一次做完,但越早处理越好。它们不会制造明显的报错,只是安静地占着抓取队列的位置,让真正该被抓的页面排在后面。
判断标准其实只有一条:用户打开这个地址,能不能得到与标题相符的内容。得不到,就该考虑改用合适的状态码。