站点跑得久了,链接失效几乎是必然的事:栏目调整、文章下线、产品停售、外部引用写错地址,都会留下打不开的链接。这些地址不会自己消失,蜘蛛每次来访都可能再撞一次,用户从搜索结果点进来也只会看到报错。把失效链接当成一项常规自查,比等到流量下滑再回头翻旧账要省力得多。
为什么失效链接值得单独查一遍
失效链接的影响不只是“不好看”,它会在几个地方持续消耗站点的效率:
- 蜘蛛把抓取预算花在打不开的地址上,真正有新内容的页面反而排不上队;
- 用户从搜索、外链或收藏夹进来直接撞墙,很可能不会再给第二次机会;
- 内链指向死页,原本应该传递下去的结构线索就断在了半路;
- 大量死链堆在日志里,会干扰你判断哪些目录真的被重视。
先把“找不到”分成几类
真 404:服务器明确说没有
请求返回 404 状态码,页面内容也是“不存在”的提示。这是最干净的情况,处理起来没有歧义。
软 404:页面回来了,但内容是空的
常见于空搜索结果页、已下架商品的详情页模板、无权限或参数错误时仍然渲染出的框架页。它们返回 200,看上去“正常”,但对用户和蜘蛛来说都是空壳。软 404 比真 404 更麻烦,因为从状态码上看不出问题,只能靠内容层面的判断去发现。
410、301 与 302 的选择
如果内容确实永久下线、且没有可替代的页面,用 410 表达“永久移除”比 404 更明确;如果内容只是换了地址,用 301 指向新地址,并且尽量做到一对一,不要把几十个旧地址全部堆到首页;302 是临时跳转,不适合用来做长期的内容迁移,否则旧地址会一直留在索引里摇摆。
去哪里找失效链接
- 服务器日志:筛出状态码为 404、410 以及频繁 301 的请求,按访问次数排序,先处理被反复请求的那批;
- 站长平台类工具:索引报告和抓取异常里通常能看到被标记的无效地址,注意区分“已删除”和“抓取失败”;
- 站内爬取:用爬虫工具把整站跑一遍,能发现日志里看不见的问题,比如内链里的死链、模板里批量生成的错误地址;
- 人工走查:导航、面包屑、页脚、专题聚合页手工点一遍,重点看改版后没同步更新的入口;
- 外链与投放渠道:看看外部引用的地址是否还成立,尤其是合作方写的旧版链接。
找到之后怎么处理
- 有对应新页面:配置 301,跳到内容最接近的那一个,而不是统一跳首页;
- 确实不再提供:明确返回 404 或 410,并保证页面本身可用;
- 误删或临时下线:优先恢复原文,比做跳转更省事,也不会损失已有的外部引用;
- 内链里的死链:直接在模板或正文里改掉,避免以后每一页都带着同一个坏链接;
- 站点地图与聚合页:把已失效的 URL 从站点地图和列表页中清理出去,别让它们继续被推荐。
处理顺序上,建议先动被频繁请求、且有外部引用的地址,再处理只在站内偶尔出现的死链。批量跳转要谨慎,一次改太多容易把本来正常的链路也带偏。
404 页面本身也该做点什么
允许页面不存在,但这张“此路不通”的牌子可以做得更有用:
- 用一句清楚的话说明页面不存在或已下线,不要写得含糊;
- 提供搜索框、主要栏目入口和几条近期更新,让用户有路可走;
- 返回码必须是 404,不要用 200 伪装成正常页面,也不要用 JS 跳转把状态盖掉;
- 不要自动跳首页,那会让用户以为点错了链接,也让状态码失去意义。
把它变成长期机制
失效链接不是一次性任务。每次改版、每次批量下线内容,都应该顺手跑一遍检查;把状态码异常加进日常监控,按周或按月看一眼趋势,比出了大问题再全站排查轻松得多。检查记录留个简单台账,写清哪些地址做了跳转、哪些是永久移除,下次遇到同样的问题就不用重新判断一遍。
死链本身不可怕,可怕的是没人知道它存在。定期把死胡同标出来、该通的通、该封的封,站点的路径才会一直清楚。