页面改版、栏目合并、域名调整、从 HTTP 迁到 HTTPS,这些动作都会留下重定向。单次跳转本身没有问题,问题在于跳转叠了好几层:A 跳到 B,B 又跳到 C,C 才返回 200。蜘蛛每遇到这种链路,都要多花几次请求才能拿到最终内容,抓取预算就这样消耗在路上。
跳转链通常是怎么堆起来的
大多数跳转链不是一次设计出来的,而是历次调整层层叠加的结果:
- 早年用 HTTP,后来迁到 HTTPS,旧规则没有清理,形成 HTTP 到 HTTPS 再到带 www 的两跳;
- 带 www 与不带 www 两个版本都在对外使用,互相跳转;
- 尾部斜杠、大小写、旧参数格式各写了一条规则,一个地址要连跳三次;
- CDN 配了一层跳转,源站又配了一层,两层规则重复;
- 短链系统、活动页、历史推广地址长期保留,且都指向已经变更过的地址。
这些规则单看都合理,叠在一起就变成了绕路。
自查可以从哪些入口入手
- 用抓取工具的跟随跳转日志,统计每个地址的跳转次数分布,优先处理三跳以上的;
- 抽样访问核心栏目和内页地址,手动看 Location 链条,确认终点返回的是正常页面;
- 对比服务器配置与 CDN 规则,找出重复定义的跳转;
- 检查站内链接、导航、sitemap 里写的是不是最终地址,而不是会被跳转的旧地址;
- 检查历史推广、友链、投放物料里残留的旧地址。
为什么内链和 sitemap 要直接写最终地址
跳转适合当作兜底:旧地址仍然可达,用户和老链接不至于撞到 404。但如果站内链接本身还写着旧地址,等于每次抓取都要先走一遍跳转再拿内容。把内链、面包屑、sitemap、canonical 统一到最终地址之后,跳转只服务于站外和历史入口,抓取路径会短一些。这里说的是减少无谓消耗,与是否被收录、排名没有直接对应关系。
把跳转当临时通道,而不是长期入口。规则留下的时间越长,越难判断哪条还能删。
处理时容易踩的几个坑
301 与 302 别混用
永久性的地址变更用 301,临时活动或短期调整用 302。长期用 302 顶着已经定型的结构变更,会让地址归属变得含糊。
别造出跳转环
A 跳 B、B 又跳回 A,或者一个地址跳向自己,会让抓取直接卡住。批量改规则之后,务必把规则跑一遍再上线。
该保留的跳转不要一刀切删掉
部分旧地址仍有外部链接和用户收藏,直接删掉变成 404 未必合适。保留一条指向新地址的干净跳转更稳。真正需要清理的是重复、绕路和互相矛盾的规则。
建议的检查节奏
每次改版或迁移上线后一周内看一次跳转日志;每季度抽样核心栏目,确认没有新增的多层跳转;把跳转规则的增删记入变更记录,写上时间和原因,避免半年后没人说得清哪条规则来自哪次调整。站点结构稳定之后,跳转规则清单应该越来越短,而不是越来越长。