站点改版、换域名、调整栏目路径之后,重定向往往是第一批被加上去的东西。加完之后很少有人回头再看一眼,于是一条本该一站直达的跳转,慢慢变成了三跳、四跳的链条。对普通访客来说,多等几百毫秒未必有明显感觉;对搜索蜘蛛来说,每一次跳转都是一次额外的请求和一次等待,抓取预算就是这样一点点被磨掉的。
重定向链是怎么长出来的
大多数链条都不是刻意设计的,而是几次改动叠加的结果。常见的来源有这几类:
- 换域名时做了 A 到 B 的跳转,后来又上了 HTTPS,链路变成 A 到 B 再到 C;
- 栏目合并时先跳到旧列表页,旧列表页里又留着一条跳新列表页的规则;
- 给页面统一加尾斜杠,而带斜杠的地址本身又被另一条规则处理了一次;
- 大小写不统一,同一批地址里既有大写版本又有小写版本,各自设了规则;
- HTTP 到 WWW、WWW 到 HTTPS 的先后顺序没有理顺,中间多出一跳;
- 临时跳转被当成永久跳转长期使用,链路一直没人清理。
这些情况单独看都不算严重,问题在于它们会互相叠加。一个几年前做过改版的页面,今天可能还挂着三条规则。
自查从哪几个入口开始
重定向链的排查不需要很复杂的工具,按下面的顺序走一遍,基本能覆盖大部分问题:
- 先从抓取日志里筛出返回 3xx 状态码的 URL,按出现次数排序,优先处理高频的那几条;
- 用爬虫工具跑一遍全站,导出跳转路径,重点看两跳以上的链条;
- 检查站点地图、主导航、正文内链里是否仍然直接写着旧地址,这些位置应该同步更新;
- 抽样几条链,看响应头里的 Location 字段指向的是中间地址还是最终地址;
- 确认 robots.txt 没有意外挡住链路中间的某个环节,否则蜘蛛可能连跳转都走不完。
日志和工具各看什么
日志告诉你蜘蛛实际遇到了什么,爬虫工具告诉你理论上存在多少条链。两边对不上是常有的事:有些地址早就没内链指向,蜘蛛却因为外链或历史记录还在访问;也有些链路藏在导航里,工具不跑一遍根本发现不了。把两边的清单交叉比对,优先级自然就出来了。
处理原则:能一站直达就别分两步
整改时的方向很明确,尽量让每一组跳转只保留一跳。
- 把 A 到 B 再到 C 合并成 A 直接到 C,删除中间那条规则;
- 站点地图、内链、对外发布过的链接同步更新,不要长期依赖跳转兜底;
- 确实需要保留的旧地址统一用 301,避免 301、302、307 混用;
- 不要用 meta refresh 或 JS 跳转来替代服务端跳转,蜘蛛对这类跳转的处理并不稳定;
- 跳转链上不要串登录验证、地区选择这类会打断访问的环节。
几类容易被漏掉的跳转
有些跳转不在源站配置里,翻配置文件是找不到的:
- CDN 或反向代理层自行添加的跳转,源站看到的请求已经是处理后的结果;
- 移动端独立域名与主站之间的互跳,两条链路可能方向还相反;
- 短链接服务生成的地址,一次转发背后可能是好几层;
- 带参数版本和干净版本之间的互跳,容易形成循环。
跳转本身不是问题,跳转链才是。一条链每多一跳,就多一次蜘蛛中途放弃的可能。
把它放进定期巡检清单
重定向链不会自己消失,只会随着改动慢慢变长。建议在每次改版、换域名、调整目录之后的一周内跑一次检查,之后按季度做一次抽样复核。检查的重点不必是全站,抓取日志里的高频 3xx 地址加上爬虫工具导出的长链清单,已经足够覆盖大部分风险。