网站跑久了,出现访问不到的地址很正常:文章被删、栏目改版、参数拼错、外部链接写错。真正影响体验和抓取的,不是“有 404”,而是这些地址返回了什么状态码、用户点进去看到什么、站内还有多少链接指向它们。
一、先分清 404、软 404 和 410
这三者在搜索引擎眼里差别很大,自查时先归类清楚:
- 标准 404:资源不存在,服务器返回 HTTP 404。这是正常且被认可的信号。
- 软 404:页面内容写着“内容不存在”,但 HTTP 状态码仍然是 200。搜索引擎会把它当成正常页面尝试处理,用户也会被误导。
- 410:明确表示资源已永久删除。如果确定不会再恢复,410 比 404 表达得更清楚,但不是必须。
判断方法很直接:打开浏览器开发者工具的网络面板,或执行 curl -I,看响应头里的状态码,别只看页面上显示的文字。
二、自查从几个动作开始
- 抓一批已知的失效地址,逐个看返回码,可以手动整理,也可以从已有日志里筛选。
- 在服务器日志里搜状态码为 200 但 URL 明显异常的记录,这类往往是软 404。
- 抽查改版时下线的栏目和文章,确认是 404、410,还是被统一跳到了首页。
- 检查 404 页面自身是否正常返回 404,有些站点连错误页都返回 200。
三、404 页面本身要经得起看
错误页是用户和搜索引擎都会碰到的一站,内容太空或太粗暴都不合适:
- 用一句明确的话说明地址不存在,不要只丢一个数字。
- 给出返回首页、主要栏目或热门内容的入口,帮助用户继续浏览。
- 提供站内搜索框,让用户自己去找。
- 保持和站内其他页面一致的头部与导航,不要让用户以为进了别人的站点。
- 不要设置几秒后自动跳转首页,这类跳转容易打断用户,也让状态判断变模糊。
四、内链与老链接最容易漏
失效地址被发现,往往不是通过直接访问,而是通过链接。常见漏点有:
- 正文里引用了已经删除的文章或附件。
- 导航、侧栏、页脚里的固定链接还指向旧地址。
- 站点地图里仍保留已经不存在的 URL。
- 旧域名、旧目录结构留下的外链,只有通过日志才看得出来。
建议定期跑一遍站内链接检查,把指向 404 的链接列出来逐个改掉。外链不好控制,但可以根据日志判断哪些老地址还有人访问,再决定是否补一条 301。
五、处理节奏:该跳的跳,该留的留
不是所有 404 都值得救,判断标准可以简单一些:
- 有替代页面、且该地址曾经有访问量:做 301 指向内容最接近的页面,注意一次跳到目标,不要串成跳转链。
- 内容彻底删除、确定不再恢复:保留 404 或返回 410 都可以。
- 因参数或大小写拼错产生的地址:优先在程序层面做规范化,而不是一条条加跳转。
- 不要把所有 404 统一跳首页,这在用户看来像被强行带回入口,也没有传递“该页不存在”的信号。
六、让 404 尽早暴露
错误页做完了不代表结束,重点是能持续看到新增的失效地址。可以在日志里按状态码统计每天的 404 数量与主要来源,数量突然上升时排查是不是某次改版或链接批量变更导致的。给几个关键路径加简单的可用性检查,也能在用户反馈之前先发现问题。
404 不是需要消灭的东西,而是需要被看见、被解释清楚的状态。把返回码、错误页内容和链接入口这三件事对齐,大部分由失效地址带来的麻烦都能控制住。