站点改版、换域名、调目录之后,很多地址会经过一次甚至多次跳转,才落到最终页面。单次跳转本身没有问题,怕的是链条越接越长,蜘蛛和用户都要多走几程才能到位。
重定向链是怎么长出来的
多数链条不是一次决定的结果,而是每次调整只改了自己这一层,没人回头清理上一层的规则。
- 域名更换后,旧域名跳新域名,新域名又重新做了主域统一;
- HTTP 到 HTTPS 迁移时,中间又叠加了 CDN 的回源跳转;
- 栏目改名时,旧栏目先跳到过渡目录,过渡目录再跳到新栏目;
- 批量工具生成的重定向规则没删,和新规则叠在一起;
- 内容下架后统一指到首页,后来首页本身也换了地址。
这些操作单独看都合理,叠加在一起就变成了一条几段式的链条。
链条变长不只是多等一会
- 每跳一次都要重新发起请求,抓取预算会消耗在中间环节上;
- 落地时间被拉长,遇到回源慢的时候超时风险上升;
- 链接权重和页面信号在每一跳里都会衰减,越往后越弱;
- 日志里同一批地址会出现多条记录,排查时容易看错对象;
- 用户在旧链接上等待更久,中途跳出的人也会更多。
怎么查一条地址跳了几次
- 用命令行工具带跟随参数请求一个地址,看返回的跳转序列,一眼能数出几段;
- 在浏览器开发者工具的 Network 面板里看文档请求,确认一条链接是否触发了多个 301 或 302;
- 从站内内链和 Sitemap 里各抽一批地址,直接请求,看最终落点是否就是想要的那个页面;
- 在蜘蛛日志里筛出 3xx 状态码,按地址分组,找出经常出现在中间环节的那些;
- 把现有重定向表导出,人工标出 A 到 B 到 C 这种多段结构,按优先级处理。
抽查的数量不用太多,几十条就能看出规则表整体的风格。如果抽查里多次出现三段以上,基本可以判断需要系统性清理。
处理时的几个判断
能压到一跳的尽量压
大部分链条可以压成一次直达。把旧地址直接指向最终地址,中间那一层不再接手。规则表里保留一行,比留着三行互相接力更好维护。
该保留的跳转可以保留
有些旧路径承载过外部链接,确实值得保留一次跳转。保留没问题,但让它直接落到最终页,不要再经过中转目录。
别用前端跳转代替服务端
meta refresh 和 JS 跳转,对抓取和用户来说都不如服务端 3xx 干净。能配服务端规则就别省这一步,尤其是批量地址。
顺手清理的几件事
- Sitemap 和内链只写最终地址,不要把中间地址提交上去;
- canonical 指向最终地址,避免和跳转结果打架;
- 长期用 302 代替 301 的地方,确认是不是真的只是临时;
- 重定向表定期复核,删除已经不再使用的规则;
- 换域名、改目录之后留一条变更记录,方便后来人看懂。
一次干净的跳转到最终地址,比一串说不清来历的中转更容易维护,也更容易让蜘蛛和用户一次到位。
重定向是站点运营里的常备工具,不是一次性动作。每次改动之后顺手看一眼链条,比攒到几十条再集中排查要轻松得多。