重定向是站点运营里很常见的手段:换域名、上 HTTPS、调整目录、合并页面,几乎都会用到跳转。单次跳转通常没什么问题,麻烦的是跳转一层接一层,访客和蜘蛛每访问一次就要多等几轮。这个环节不容易被注意到,因为它不会报错,页面看起来也能正常打开。
跳转链为什么会累积
大多数跳转链不是一次设计出来的,而是多次改动叠加的结果。比如最早的地址是 http,后来加了 www,再后来上了 HTTPS,每一次都加了一条规则,但没人回头清理旧的那条。结果就是一次访问要经过三次跳转才落到最终页面。
类似的叠加还有:目录结构调整后,老地址跳到新地址,新地址又跳到另一个新地址;页面合并时,被合并的地址跳到一个中转页,中转页再跳到最终页。链条越长,中间任何一环出问题,整条链路就断了。
值得优先检查的几种情况
- 协议与主机名不统一:http 跳 https、不带 www 跳带 www,如果规则分开写,很容易变成两跳甚至三跳。
- 末尾斜杠与大小写:带斜杠与不带斜杠被当成两个地址,互相跳来跳去。
- 跳转类型混淆:该用 301 的地方用了 302,或者反过来,临时改动被当成永久规则留了下来。
- 跳转目标又跳走:落点本身还有一条重定向规则,形成链式反应。
- 落点已失效:跳转指向一个已经下线的页面,最终返回 404 或错误页。
- 非服务端跳转:用 meta refresh 或 JavaScript 做跳转,不同客户端和蜘蛛的处理方式并不一致。
自查可以从这几步开始
- 挑一批有代表性的地址,用命令行工具查看完整跳转链,记录每一跳的状态码和目标地址。
- 把跳转超过一跳的地址整理出来,判断哪些规则可以合并成一条。
- 核对跳转类型:长期有效的迁移用 301,临时维护或活动页用 302,不要长期混用。
- 确认最终落点返回 200,且页面内容与原来的主题一致,没有变成不相关的页面。
- 把 meta refresh 和脚本跳转尽量改成服务端跳转,减少处理方式上的差异。
站内链接应该直接指向终点
很多跳转链的源头不在规则里,而在站内链接上。导航、面包屑、站内推荐、站点地图里的地址,如果还停留在老版本,每次访问都要绕一圈。把内链统一改成最终地址之后,跳转规则就只需要服务外部链接和历史收藏了。
这一步的收益比较直观:访客少等几轮,蜘蛛也不会把抓取次数浪费在同一批地址上。
从日志里看跳转的痕迹
跳转会在一段时间的访问日志里留下连续记录。同一类访问集中在几个老地址上,通常就是跳转规则仍在生效的信号。观察这类记录的变化,可以判断站内链接是不是已经清理干净。
跳转规则能少一条就少一条,能合并就合并,别让访客和蜘蛛在路上绕圈。
什么时候需要重新查一遍
换域名、迁移 HTTPS、调整目录结构、做页面合并之后,建议都把跳转链过一遍。平时也可以按季度抽查一次,重点看新增的规则有没有和目标地址冲突。规则本身不复杂,难的是记得回头清理旧的那一层。