访客打错一个字母、点到一个旧链接,或者从外部网站跳进来,最后落到哪儿,往往就是你的 404 页面。这个页面平时没人看,出问题的时候却天天有人看。更麻烦的是,不少站点的错误页返回的状态码不是 404,而是 200——对访客来说只是看到一句“页面不存在”,对搜索引擎来说却是一个正常页面。这类情况通常被叫做“软 404”。
先确认错误页返回的状态码
打开浏览器开发者工具的网络面板,或者用 curl 请求一个肯定不存在的地址,看响应头里的状态码。理想结果是 404 或 410。如果看到 200,说明服务器把错误页当成了正常内容返回。
- 200:最常见的问题。多数是服务器配置了统一的错误文档重写,或者框架路由把所有未匹配请求都指向同一个页面,却没有设置状态码。
- 301 / 302:错误页被跳转到首页。短期看访客体验还行,长期看会让蜘蛛把大量不存在的地址当成有效地址,反复抓取。
- 404:状态码正确,但还要看页面本身有没有可用内容。
- 403 / 500:要分清是错误页配置写错了,还是服务端真的在报错。
软 404 通常从哪来
软 404 很少是有人故意做出来的,多数是配置的副产物。可以按下面几处对照排查:
- 服务器或 CDN 上配置了“找不到页面时统一显示 index.html”,返回码跟着变成 200。
- 单页应用把所有路由都交给前端处理,服务端只用 200 返回同一个 HTML 外壳。
- 内容管理系统里,删除文章后仍保留一个空壳页面,标题和正文都是空的。
- 搜索结果页、筛选页在无结果时返回 200,外加一大段提示文字。
- 参数写错或页码超出范围时,页面悄悄回退到第一页并返回 200。
错误页应该给访客什么
状态码对了,只解决了一半。访客点进来是想找东西,不是想看一句冷冰冰的报错。一个能用的错误页至少应该包含:
- 一句清楚的话,说明这个地址找不到,而不是让访客怀疑自己网络有问题。
- 回到首页的入口,以及站内主要栏目的链接。
- 一个站内搜索框,让访客能直接找想要的内容。
- 如果内容被迁移过,给出新地址的入口或几条相关推荐。
- 与站点整体一致的样式,别让访客以为跳到了别的网站。
错误页和蜘蛛之间要注意的事
如果错误页返回 404,通常不需要额外加 noindex,蜘蛛看到状态码就不会收录。真正需要注意的是两种情况:一种是状态码为 200 的软 404;另一种是错误页被模板带上了全站导航、推荐和大量链接,蜘蛛会在无效页面上把站内结构重新走一遍,浪费抓取预算。
另外,错误页上的链接尽量指向长期稳定的地址。别把临时活动页放上去,活动一结束,又变成新的 404。
一份可以照着做的自查清单
- 用 curl 或开发者工具确认不存在的地址返回 404,而不是 200。
- 检查服务器、CDN、框架路由的兜底规则,看有没有把错误页当成正常页面返回。
- 抽查一批已删除内容的旧地址,看它们是 404、410,还是跳回首页。
- 确认错误页包含返回首页入口和站内搜索。
- 检查错误页有没有被统计代码、站内推荐拖成一张很重的页面。
- 用电脑和手机各打开一次,确认排版没有错位。
- 把定期抽查错误页写进运维或编辑的例行事项里。
错误页不是给搜索引擎看的,是给走错路的访客看的。先把它做成一个说得清、走得出去的页面,再谈别的。