站点运营

站点运营:重定向链自查,别让蜘蛛在跳转里绕圈子

重定向本身不是问题,层层叠加的跳转链才是。本文梳理重定向链常见的产生场景,给出一套从抓取日志和爬虫工具入手的自查流程,并说明处理时应遵循的合并与更新原则,帮助站点减少不必要的中间跳转。

站点运营

站点运营:重定向链自查,别让蜘蛛在跳转里绕圈子

站点改版、换域名、调整栏目路径之后,重定向往往是第一批被加上去的东西。加完之后很少有人回头再看一眼,于是一条本该一站直达的跳转,慢慢变成了三跳、四跳的链条。对普通访客来说,多等几百毫秒未必有明显感觉;对搜索蜘蛛来说,每一次跳转都是一次额外的请求和一次等待,抓取预算就是这样一点点被磨掉的。

重定向链是怎么长出来的

大多数链条都不是刻意设计的,而是几次改动叠加的结果。常见的来源有这几类:

  • 换域名时做了 A 到 B 的跳转,后来又上了 HTTPS,链路变成 A 到 B 再到 C;
  • 栏目合并时先跳到旧列表页,旧列表页里又留着一条跳新列表页的规则;
  • 给页面统一加尾斜杠,而带斜杠的地址本身又被另一条规则处理了一次;
  • 大小写不统一,同一批地址里既有大写版本又有小写版本,各自设了规则;
  • HTTP 到 WWW、WWW 到 HTTPS 的先后顺序没有理顺,中间多出一跳;
  • 临时跳转被当成永久跳转长期使用,链路一直没人清理。

这些情况单独看都不算严重,问题在于它们会互相叠加。一个几年前做过改版的页面,今天可能还挂着三条规则。

自查从哪几个入口开始

重定向链的排查不需要很复杂的工具,按下面的顺序走一遍,基本能覆盖大部分问题:

  1. 先从抓取日志里筛出返回 3xx 状态码的 URL,按出现次数排序,优先处理高频的那几条;
  2. 用爬虫工具跑一遍全站,导出跳转路径,重点看两跳以上的链条;
  3. 检查站点地图、主导航、正文内链里是否仍然直接写着旧地址,这些位置应该同步更新;
  4. 抽样几条链,看响应头里的 Location 字段指向的是中间地址还是最终地址;
  5. 确认 robots.txt 没有意外挡住链路中间的某个环节,否则蜘蛛可能连跳转都走不完。

日志和工具各看什么

日志告诉你蜘蛛实际遇到了什么,爬虫工具告诉你理论上存在多少条链。两边对不上是常有的事:有些地址早就没内链指向,蜘蛛却因为外链或历史记录还在访问;也有些链路藏在导航里,工具不跑一遍根本发现不了。把两边的清单交叉比对,优先级自然就出来了。

处理原则:能一站直达就别分两步

整改时的方向很明确,尽量让每一组跳转只保留一跳。

  • 把 A 到 B 再到 C 合并成 A 直接到 C,删除中间那条规则;
  • 站点地图、内链、对外发布过的链接同步更新,不要长期依赖跳转兜底;
  • 确实需要保留的旧地址统一用 301,避免 301、302、307 混用;
  • 不要用 meta refresh 或 JS 跳转来替代服务端跳转,蜘蛛对这类跳转的处理并不稳定;
  • 跳转链上不要串登录验证、地区选择这类会打断访问的环节。

几类容易被漏掉的跳转

有些跳转不在源站配置里,翻配置文件是找不到的:

  • CDN 或反向代理层自行添加的跳转,源站看到的请求已经是处理后的结果;
  • 移动端独立域名与主站之间的互跳,两条链路可能方向还相反;
  • 短链接服务生成的地址,一次转发背后可能是好几层;
  • 带参数版本和干净版本之间的互跳,容易形成循环。
跳转本身不是问题,跳转链才是。一条链每多一跳,就多一次蜘蛛中途放弃的可能。

把它放进定期巡检清单

重定向链不会自己消失,只会随着改动慢慢变长。建议在每次改版、换域名、调整目录之后的一周内跑一次检查,之后按季度做一次抽样复核。检查的重点不必是全站,抓取日志里的高频 3xx 地址加上爬虫工具导出的长链清单,已经足够覆盖大部分风险。