站点做久了,几乎都会经历几次改版、栏目合并、路径调整。每次调整都会留下一批跳转规则,当时看没问题,一年后再回头看,同一条地址可能要绕过三四个跳转才落到最终页面。跳转链平时不疼不痒,真出问题时却很难排查:访客多等几百毫秒,蜘蛛可能中途放弃,日志里也全是难以判断的状态码。
跳转链通常是怎么堆起来的
- 页面从 A 改成 B,后来 B 又改成 C,但 A 的规则没同步更新,仍然指向 B。
- HTTP 跳 HTTPS、带 www 跳不带 www、旧域名跳新域名,几层规则各自为政,串在一起。
- 栏目停用后统一跳到首页,首页后来又加了一层跳转。
- 移动端与桌面端互相判断跳转,条件写错就会出现来回跳。
- 外部链接、广告投放、二维码里写的还是旧地址,而旧地址又被新规则接管。
自查要看哪几个点
- 链路长度:随机抽一批老地址,看从输入到最终页面要经过几次跳转。超过一次就该问一句为什么。
- 最终状态码:终点必须是正常返回,不能是一条 301 指向 404,也不能指到另一个同样在跳转的地址。
- 是否成环:A 跳 B、B 又跳回 A,浏览器会直接报错,抓取也会记一次失败。
- 规则是否还有效:迁移时临时加的全站跳转,任务结束后忘了撤。
- 大小写与结尾斜杠:同一个路径因为写法不同各跳一次,白白多出一跳。
- 站内链接:导航、内链、Sitemap 里是否还在用旧地址,直接改掉比靠跳转更省事。
跳转方式本身也要挑
永久性变更用 301 或 308,临时活动页用 302 或 307,这属于基本约定。需要留意的是另外几种:meta refresh 和 JavaScript 跳转对访客还算能用,但对抓取和调试都不友好,能不用就不用;服务器配置里的重写规则要注意优先级,写重了可能把静态资源也卷进去。
检查方法不必复杂
用浏览器的开发者工具看 Network 面板,勾上保留日志,刷新一次就能看到整条链路;命令行下也可以只请求响应头,观察状态码和 Location 字段。更稳妥的做法是在访问日志里按状态码筛选,把持续返回 301、302 的地址列出来,人工过一遍哪些是必要的、哪些可以合并。
改版或迁移时的清单
- 先梳理旧地址清单,明确哪些是永久失效、哪些是一一对应迁移。
- 新的跳转规则尽量直接指向最终地址,不要一层套一层。
- 上线后复查站内链接和 Sitemap,把它们直接更新成新地址。
- 给跳转规则留备注和添加日期,方便以后判断还有没有保留的必要。
- 过一段时间再回看日志,确认老地址的请求量已经降下来。
跳转的作用是过渡,不是长期的目录结构。规则一旦变成历史包袱,清理它比添加它更需要耐心。
跳转链这件事,不需要一次清得干干净净。每隔一段时间挑几条最常被访问的老地址跟一遍,把明显多余的跳转合并掉,访问路径就会越来越短、越来越清楚。这对访客、对抓取、对以后接手维护的人,都是省事的选择。