软 404 说的是什么
软 404(soft 404)指的是这样一种情况:一个 URL 返回的 HTTP 状态码是 200,但页面内容在告诉访问者“这里没有东西”。常见表现是空列表、已下架商品的占位文案、前端路由没匹配到内容时渲染出的空壳、报错提示页,或者一批结构相同、只有一行“暂无内容”的模板页。
对用户来说,这只是体验问题;对搜索引擎来说,这是一个信号冲突:服务器说“一切正常”,页面本身却说“我不存在”。处理这种冲突时,通常会更倾向于相信页面内容,把它当成实际不存在的页面来处理。
常见的几种来源
- 单页应用或前端路由:路由没有匹配到,仍然返回 200,HTML 里几乎是空的。
- 商品、房源、活动下架后仍然返回 200 的占位页。
- 空分类、空标签、没有结果的筛选页和站内搜索结果页。
- 需要登录才能看到内容的页面,爬虫访问到的是空壳。
- 受地区、设备或 Cookie 限制,返回了一份无内容版本。
- 服务端出错,却被统一包装成 200 的错误提示页。
它对收录的影响方式
首先,问题不只是“收不收录”。这类 URL 会被正常抓取,占用抓取资源;当搜索引擎确认内容没有价值后,可能把它标记为软 404,从索引里移除,或者从一开始就不编入索引。数量一多,报告里会堆满这类状态,真正的 404 和正常页面反而被淹没。
其次,它会让重复内容的判断变得混乱。当大量软 404 页面共用同一套模板,彼此高度相似,搜索引擎面对的就是一批几乎一样的低价值页面。
还有一种更隐蔽的情况:把已经失效的页面 301 到首页。用户和搜索引擎都被送到一个内容完全无关的地址,这种做法经常被视作软 404 的变体——既没有把信号传递给相关页面,也没有让失效地址干净地退出。
怎么确认自己站点有没有
- 先看索引覆盖报告里“软 404”这一类,把被点名的 URL 抽出来。
- 用抓取工具或命令行请求这些 URL,记录返回的真实状态码和正文长度。
- 对比多个问题 URL 返回的 HTML,看是不是同一套空模板。
- 回到代码或 CMS,确认问题出在路由配置、下架逻辑,还是错误处理被写成了 200。
修复顺序:先分类,再动手
确实不该存在的页面
直接返回 404;如果希望更快地退出索引,可以用 410。关键是让状态码和内容保持一致,而不是继续返回 200。
有替代页面的失效页
用 301 指向内容最接近的那个页面,尽量一对一地跳。不要把所有失效页统一甩到首页或分类首页。
内容暂时为空、以后会补上的页面
先补上说明性内容,或者暂时加 noindex,等有内容再放开。空着返回 200,本身就是软 404 的高发场景。
需要登录或受限的页面
如果这类页面本来就不打算被索引,就用 noindex 或 robots 规则处理,而不是让爬虫抓到一份空壳还返回 200。
软 404 的修复重点不在“让页面被收录”,而在于让状态码、内容和页面去向三者一致:该留的留,该走的走,该指向别处的指向最相关的那一个。
最后回头检查一遍:站内那些返回 200 却没有实际内容的地址,是真的在提供服务,还是只是为了通过状态码检查。前者不用管,后者通常都会在索引报告里慢慢显现出来。