站点上线一段时间后,总会攒下一批打不开的地址:改版时删掉的栏目、被合并的标签页、外部引用写错的参数。这些地址本身不算大问题,问题是它们被返回成什么样子——访客看到的是白屏还是一句有用的提示,蜘蛛拿到的是 404 还是一个“看起来很正常的 200”,都会影响后续的判断。
先分清三种“找不到”
硬 404:状态码和内容一致
页面确实不存在,服务器返回 404,同时给出一段自定义提示。这是最干净的状态,访客知道走错了,蜘蛛也能据此把地址从索引里慢慢移出。
软 404:内容说没有,状态码说正常
有些 CMS 在找不到内容时会渲染一个“无内容”模板,HTTP 状态码却仍然是 200。这类页面在工具里看起来“可访问”,实际上没有任何价值,还容易被当成低质页面。自查方法很简单:随便敲一个明显不存在的地址,用浏览器开发者工具或 curl 看返回码。
410 与 301 的使用边界
内容永久删除且没有替代,可以用 410 表达得更明确;如果只是换了地址,就该用 301 指到新地址。最要避免的是把大批无关的失效地址统一 301 到首页,访客点进来发现不是自己要的东西,跳转关系也会变得混乱。
一次可以落地的错误页自查
- 随机抽取 10 个历史 URL(旧栏目、旧文章、旧分页),逐个记录状态码与最终落地页。
- 检查 404 页面是否真的返回 404,而不是 200 或 302。
- 确认自定义错误页带有站内导航、搜索框和返回上一级的入口。
- 翻服务器访问日志或站长平台里的“找不到”报告,找出重复出现次数最多的地址。
- 对高频地址逐个判断:是补内容、做 301,还是保留为 404 并更新内链。
- 检查站内是否还有页面链接向这些失效地址,把内链一并改掉。
错误页面上该放什么
- 一句清楚的人话,说明这个地址没有内容,而不是“系统错误”。
- 站内搜索框,让访客能自己找到替代内容。
- 几个主要栏目的入口,或者最新的几条内容。
- 返回首页的链接,并且只保留一条明确的返回路径。
不建议在错误页上塞大段广告或做自动跳转。自动跳转会打断访客的操作,也让状态码的意义变得模糊。
容易忽略的几处
- 大小写和尾斜杠造成成对出现的地址,例如 /A 与 /a、/page 与 /page/,往往一个正常一个 404。
- 带参数的旧地址,如 ?id=123,改版后没有做映射。
- 图片、CSS、JS 等静态资源 404,页面看起来“能用”,实际样式或功能已经缺了一块。
- 移动端模板与 PC 模板路径不一致,导致只有一部分地址失效。
错误页不是面子工程,它是访客在站内迷路时最后一条指引。状态码准确、页面有用,比页面好看更重要。
把它变成例行检查
不必天天盯,但可以按季度做一次:导出日志里的 404 列表,按出现次数排序,处理掉前二三十条;每次改版上线后也顺手抽查几个旧地址。长期下来,站点里“打不开”的入口会明显变少,访客和蜘蛛遇到的死路也会跟着减少。