失效链接不是小事,但也不用当成灾难
站内出现几条 404,大多数站点都躲不掉。真正需要留意的是规模:如果某个栏目、某批文章下面挂着成片的失效链接,抓取程序顺着内链走过去,接二连三撞上空页面,自然会降低对这个区域的兴趣。对访客来说也一样,点三次有两次是错误页,就很难再信任站内的导航。
所以这件事的重点不是一条都不能有,而是把失效链接控制在一个可解释的范围内,并且知道它们为什么会出现。
站内断链通常从哪来
- 改版换地址:栏目调整、文章路径重写,旧地址没做跳转。
- 内容下架:商品下架、活动结束、文章删除,但内链还在别处引用着。
- 大小写与斜杠不一致:手写内链时把 URL 写成了另一个版本。
- 媒体资源被清理:图片或附件挪了目录,正文里的引用没跟着改。
- 外部引用失效:其他站或自家老页面引用了已经不存在的内容。
- 测试页面残留:临时上线又撤掉的页面,链接留在导航或推荐位里。
怎么系统地把它们找出来
一、先从日志里的状态码统计开始
按天统计服务器日志中状态码为 404、410 的请求,把路径去重后排序,取前几十条看。这一步成本最低,而且能直接看出哪些错误页被反复请求——被反复请求,说明站内或站外还有链接指向它。
二、再用爬虫工具跑一遍站内链接
从首页出发,限定同域名,把内链全部走一遍,导出所有返回 4xx 的地址以及它们的来源页面。日志看的是已经发生过的访问,爬虫看的是当前结构里存在的链接,两个结果合起来看,基本不会有明显遗漏。
三、顺手核对 sitemap 和站内推荐位
把 sitemap 里列出的地址抽一部分抽查,确认还能正常打开;导航、侧栏、相关阅读这些固定推荐位,尤其容易在改版后留下旧链接。
找到之后的处理顺序
- 有对应新地址的:做 301 跳转,指向内容最接近的那个页面,不要一律指向首页。
- 彻底不打算再提供的:返回 410,明确表示内容已移除,比长期返回 404 更干净。
- 内容其实还在,只是路径写错了:修正内链本身,比加跳转更合适。
- 被大量引用的重要旧地址:考虑恢复内容或做跳转,不要只靠 404 硬扛。
- 处理完记得同步更新 sitemap,避免清单里还挂着已经失效的地址。
一个常见的偷懒做法是把所有 404 都 301 到首页。这会让大量不同来源的地址收敛到同一个页面,跳转关系也变得混乱,短期看似干净,长期反而更难判断哪些页面真的被淘汰了。
几个容易踩的坑
- 用 200 状态码返回一个页面不存在的提示页,也就是软 404,会让人和爬虫都分不清真假。
- 301 跳转层层叠加,A 跳 B、B 跳 C,链条太长容易在中途被放弃。
- 只改了内链,忘了改 sitemap、RSS 或站内搜索的索引数据。
- 清理失效链接时顺手删掉了本可以保留的旧内容,反而丢掉了一批已经积累起来的入口。
放进日常节奏里
不必天天查。改版、批量下架、迁移目录之后立刻查一次;平时按月或者按季度跑一遍日志和爬虫就够了。查完把结果和处理方式简单记一笔,下次遇到类似情况能省不少时间。