站点跑久了,死链几乎不可避免:内容下线、栏目调整、URL 规则变更,都会留下指向已不存在页面的链接。单条死链不算什么,但积累到几十上百条,蜘蛛每次来都要在无效地址上耗掉一部分注意力,访客也会在半路撞上错误页。把它当成日常维护的一部分,比等到问题成片出现再回头收拾要省事得多。
死链通常从哪来
- 内容删除或合并:旧文章被并入新专题,原地址没有留下任何出口。
- URL 结构改动:换 CMS、改目录名、调整大小写或末尾斜杠之后,旧地址直接失效。
- 栏目裁撤:整个频道下线,但导航、页脚、相关推荐里还挂着指向它的链接。
- 外部引用:别的站转载或引用了你的旧地址,你删了内容,对方不会同步更新。
- 手写链接出错:编辑在正文里手动插入链接时拼错了目录或文件名。
用几个渠道把死链找出来
只靠人工点显然不现实。比较省力的做法是几路并行:
- 服务器日志:筛选返回 404、410 的请求,重点看那些被反复请求的地址,反复出现说明还有页面在链它,或者外部有稳定引用。
- 站内爬取:用爬虫工具跑一遍自己的站,输出内部链接的错误报告,这是发现内链死链最直接的方式。
- 搜索后台报告:搜索引擎提供的抓取错误或索引报告,能反映蜘蛛视角下的问题,注意区分「从未存在」和「曾经存在」两种情况。
- 外链工具:看看哪些外部页面还指向已经失效的地址,这类地址往往值得单独处理。
处理方式要分情况
把所有失效地址统一跳到首页,是最常见也最容易出问题的做法。访客点进去发现内容和预期完全无关,很快就退出;首页也会因此收到大量与自身主题无关的访问信号,反而不利于判断哪些页面真正重要。
有明确对应新地址的
用 301 指向最接近的现役页面。判断「最接近」的标准是主题一致,而不是首页。文章合并进专题,就指向那个专题;产品下架但站内有同类替代,就指向替代品。跳转目标要一次到位,别经过多层中转。
确实不再存在且没有替代的
返回 404 或 410 都可以,关键是要返回真实的状态码,而不是用 200 加一句「内容不存在」来伪装。如果地址是永久移除,410 表达得更明确一些,但两者在实际处理上差别不大,不必为此纠结太久。
只是临时下线的
如果页面只是短期维护,用 503 并附带 Retry-After,比直接删掉更合适,能避免蜘蛛把临时状态当成永久消失,也能减少访客对错误页的困惑。
404 页面本身也要能用
错误页不是终点。给访客留几个出口:首页、主要栏目、站内搜索框,再加几条近期更新的内容。页面文案要明确告诉用户「这个地址没有内容」,而不是留一片空白,或者做一个几秒后自动跳走的倒计时页面。
把排查做成固定动作
建议每次内容批量调整后跑一次站内爬取,每月看一次日志里的 404 与 410 汇总。发现问题先判断来源:是内链写错,还是内容真的没了。前者改链接,后者按上面的原则处理。把已经处理过的地址简单记一笔,下次遇到同类情况能直接对照,也能避免重复劳动。
死链处理的目标不是让 404 数量归零,而是让每一条失效地址都有明确的去向和合理的解释。
最后提醒一点:不要为了把报告清空而给所有旧地址都做 301。跳转数量一多,蜘蛛同样会绕圈,而跳转目标不相关时,用户和搜索引擎都得不到有用的信息,等于把问题从「找不到页面」换成了「找到错误的页面」。