站点改版、切 CDN、换域名之后,URL 往往要经过好几跳才落到最终页面。单次跳转是正常做法,但几层叠在一起,蜘蛛从发现一个地址到真正读到内容,中间要绕的弯就变多了。
单次跳转没问题,叠加起来才麻烦
301、302 都是标准做法,用来处理域名变更、路径调整再正常不过。问题出在链条上:一个入口 URL 先跳到 A,A 再跳到 B,B 又跳到 C,最后才到落地页。对用户来说可能只是多等几百毫秒,对抓取来说,每一跳都是一次独立的请求,以及一次 DNS、TLS、等待响应的完整循环。
常见的链条是这样长出来的
- HTTP 到 HTTPS 没有一次到位:先跳到 https 的旧域名,再跳到 https 的新域名。
- www 与非 www 来回跳:主域和带 www 的版本都能访问,各自又指向对方。
- 尾斜杠补跳:目录地址先补斜杠,再跳到带参数的最终地址。
- 目录迁移留下的旧链接:老目录跳到新目录,新目录内部又跳一次。
- CDN 与负载层的规则:边缘节点先做一次跳转,源站再补一次。
- 营销短链和跳转页:站外链接指向中转页,中转页再跳向内容页。
链条变长,蜘蛛那边会发生什么
- 抓取预算被摊薄:本来一次请求能拿到的内容,现在要花两三次,同样的配额能覆盖的 URL 变少。
- URL 发现路径被拉长:每一跳都产生一个新的地址需要被记录和处理,队列里的条目随之增加。
- 信号传递不清晰:链条中间的地址可能被当作独立 URL 参与后续判断,需要靠 canonical 或 Sitemap 去对账。
- 失败概率上升:链条上任何一环超时、返回 5xx 或连接被重置,整条路径就断在那里。
要说明的是,这些影响是渐进的,不会因为多了一跳就让页面从索引里消失,但链条越长,能平稳走完的概率越低。
怎么数清一条 URL 有多少跳
- 拿站点主要的入口 URL,比如首页、栏目页、Sitemap 里的地址,用命令行工具或浏览器的网络面板看完整的跳转序列。
- 记录每一跳的状态码、目标地址和耗时,重点关注 302 和临时跳转,它们比 301 更容易被长期保留下来。
- 对照服务器访问日志,看蜘蛛请求这些地址时是否也在跟着跳,有没有在中间某一跳就停下。
- 把 http、https、www、非 www、带斜杠、不带斜杠几个版本分别试一遍,检查是否存在互相指向的循环。
缩短链条的几个做法
- 把多级跳转合并成一次,直接指向最终地址,不在中间保留过渡页。
- 确定唯一的规范域名和协议,其余版本一律 301 到它,不要再做二次转发。
- 站内链接、Sitemap、canonical 里直接写最终地址,减少蜘蛛被带着跳的机会。
- CDN 层的跳转规则和源站规则对一遍,避免两边各做一次。
- 改版期间用的临时跳转,在切换完成后尽早换成永久跳转,或者直接把链接改掉。
缩短链条是为了让抓取路径更干净,不是为了把所有跳转都去掉。必要的域名统一和路径调整,该跳还是要跳,关键是别在中间留下多余的驿站。
跳转本身不是问题,堆积才是。把站点的主链条梳理到一跳之内,剩下的交给内容结构和内链去组织,抓取路径会顺畅很多。