死链的特点是安静。它不会像服务器宕机那样立刻被人发现,也不会像证书过期那样弹出警告。它只是慢慢堆积:用户点进去看到一片空白,蜘蛛爬到之后拿到一个 404,然后离开。单次损失很小,但数量上来之后,用户体验和抓取效率都会被拖住。
死链一般从哪儿来
大多数死链不是一次事故造成的,而是日常运营的副产物。常见的来源有几类:
- 内容下线:文章被删除、合并或者改成了新地址,但旧链接还挂在别处。
- 栏目调整:栏目改名、层级变动,列表页和导航更新了,正文里的老链接没跟着改。
- URL 规则变化:从动态参数改成静态路径,或者反过来,旧格式没有做跳转。
- 外部引用失效:合作方、转载站、论坛里的链接指向了已经不存在的位置。
- 手误:编辑在正文里写链接时少了一个字符,或者多打了一个空格。
这几种情况里,前三种属于结构性变化,影响面大但一次性能修完;后两种零散出现,需要靠机制而不是靠人眼去发现。
怎么把死链找出来
靠抽查首页和几个栏目页是不够的,覆盖面太窄。比较稳妥的做法是几个来源交叉比对:
- 服务器日志:筛选状态码为 404、410 的请求,按出现次数排序。次数高的通常是被反复引用的地址,优先级最高。
- Sitemap 与现有页面对比:把 Sitemap 里提交过的地址逐个访问一遍,能发现那些已经下线但仍被提交的页面。
- 站内链接抓取:用一个简单的爬虫工具把全站链接跑一遍,重点看正文内链、导航、页脚和侧边栏。
- 站内搜索词与热门落地页:用户搜索过但点进去是空的词,往往对应着已经失效的页面。
- 外部来源:在搜索引擎里查一下自己的域名,看看有哪些第三方页面指向了已经不存在的地址。
找到了以后怎么处理
不是所有 404 都要变成 301,处理方式取决于这个地址还有没有价值。
301:内容还在,只是换了地址
如果目标内容仍然存在,只是 URL 变了,把旧地址 301 到最接近的新地址。注意是“最接近”,不是全部跳到首页。把大量旧链接统一指向首页,等于告诉搜索引擎这些地址没有对应内容,跳转也就失去了意义。
410:内容确定不再提供
如果页面确实永久下线,而且没有合适的替代内容,返回 410 比返回 404 更明确。它表示这个地址不会再有了,有助于减少反复抓取。前提是确认不会恢复,否则以后重新上线会带来额外麻烦。
补内容或合并
有些死链背后是用户真实的需求。与其让它变成 404,不如把相关内容合并到一篇更完整的页面里,再把旧地址指过去。这样既处理了死链,也保留了原有的访问量。
修完之后别就此收工
死链是持续产生的,一次性大扫除只能解决存量。更实际的做法是把它变成常规动作:
- 内容下线或改地址时,同步检查站内引用,把内链一起更新。
- 每次改版或调整 URL 规则后,专门跑一次全站链接检查。
- 按周或按月看一次日志里的 404 排行,把新增的高频地址及时处理。
- 给 404 页面本身做点设计:给出搜索框和几个主要栏目入口,让迷路的用户还有路可走。
死链自查的目标不是让 404 数量归零,而是让每一个 404 都是有意为之的结果,而不是无人察觉的遗漏。
这件事不需要多复杂的工具,日志加一次全站抓取就能覆盖大部分情况。真正难的是把它排进日常流程,而不是等到用户投诉或者流量下滑时才回头翻旧账。