站点运营里有一类问题不太显眼:页面已经不存在了,服务器却仍然返回 200。访客看到的是一屏空白或一句“暂无内容”,而对外发出的信号却是“这个地址正常”。这就是常说的软 404。它不会让站点立刻报错,却会长期消耗抓取资源,也让真正的错误地址无法被识别出来。
硬 404 与软 404 的区别
硬 404 指服务器明确返回 HTTP 404 状态码,告诉访问者这个地址没有内容。软 404 则是地址确实没有可看的内容,状态码却仍是 200,或者返回的内容与请求的地址毫无关系。
- 文章已删除,但模板还在,返回 200 加一屏空白;
- 搜索、筛选参数生成了无结果的列表页,仍返回 200;
- 栏目被合并,旧栏目地址被统一跳转到首页;
- 内容状态改为草稿或下线,前台地址仍可访问,只是正文为空。
自查从哪些入口开始
与其全站扫描,不如先圈出最容易出问题的位置:
- 列出近期下线的栏目、专题、商品或文章,逐条回访地址;
- 用站内搜索和筛选参数拼几个无结果组合,看返回什么;
- 整理改版前的旧地址清单,抽查是否还有响应;
- 翻访问日志,找状态码为 200 但响应体明显偏小的请求。
单条地址怎么快速判断
用命令行工具请求地址头信息是最直接的办法,例如请求 https://example.com/old-page 时,重点看返回的第一行状态码,以及响应体长度。状态码 200 加上很短的响应体,通常就值得点开确认。如果站点启用了跳转,还要留意跳转目标本身是否可访问,避免链条越接越长。
批量抽查的做法
把旧地址整理成一个文本文件,逐条请求并记录状态码、跳转目标和响应体大小,重点挑出“200 但内容很短”的地址。得到一批结果后,再决定是恢复内容、做跳转,还是让它正常返回错误码。批量处理前建议先小范围试跑,确认规则符合预期再全量执行。
常见的处理方式
- 内容只是换了地址:做 301 跳转到新地址,并确认目标页可以正常打开。
- 内容确实下线:返回 404,已经明确不再提供的内容可以用 410。
- 栏目整体撤掉:把仍有价值的旧地址指向最相关的上级栏目,而不是一律跳首页。
- 筛选与搜索无结果:考虑返回错误码,或至少避免让这类组合被大量生成。
- 下线数量较多:先归拢成清单分批处理,保留变更记录,方便出问题时回退。
错误页本身也值得做好
返回 404 不等于把访客赶走。一个清晰的错误页应该说明“该页面可能已移除或地址输入有误”,同时提供站内搜索框、主要栏目入口和返回首页的链接。注意错误页不要做自动跳转,也不要在上面堆大量推广内容,否则访客会分不清自己到底到了哪里。
提示:状态码是给机器看的信号,页面内容是给人看的。两者保持一致,访客和爬虫才不会互相误解。
把它变成例行检查
建议在每次改版、批量下线内容和调整栏目结构之后,都做一轮状态码抽查,并把结果简单记录:哪些地址被跳转、哪些返回错误、哪些还没处理。这项工作不复杂,但能避免“地址还在、内容没了”长期堆积。它不保证任何收录或排名结果,只是让站点对外发出的信息保持诚实和一致。