页面跳转在站点运营里几乎是常态:http 换 https、换域名、加 www、补尾斜杠、移动端适配、活动页临时改地址。对用户来说只是地址变了一下,对搜索蜘蛛来说,每一次跳转都是一次额外的请求。跳转本身不是问题,成链的跳转才是。
蜘蛛看到跳转时的基本动作
蜘蛛请求一个 URL,拿到 3xx 状态码和 Location 头之后,会按规则去请求新的地址。它不会因为一个跳转就放弃,但每一跳都会占用一次抓取机会,也会拉长从入口到正文的时间。如果链路里出现循环、跳转到 5xx,或者跳转到 robots.txt 禁止的地址,这一轮抓取基本就白费了。
- 301:永久跳转,蜘蛛一般会把原地址的信号传递到目标地址,并逐步用新地址替换索引里的旧地址。
- 302 / 307:临时跳转,蜘蛛仍会跟过去抓取,但通常保留原 URL 作为规范地址;长期使用临时跳转,会让地址状态变得模糊。
- meta refresh 与 JS 跳转:需要先拿到 HTML 再执行,蜘蛛可能先把它当成一个普通页面,第二轮或渲染阶段才走到目标地址,链路更长也更不稳定。
跳转链太长会带来什么
常见的一条链是:http://example.com 跳到 https://example.com,再跳到 https://www.example.com,再到 https://www.example.com/,最后到真正的首页。五次请求才落地。对少量 URL 无所谓,当成千上万个内链都这样走时,抓取预算就消耗在中间环节上了。
更麻烦的是链路中的不确定性:中间某一跳返回 302 到登录页,跳转目标被带上了 session 参数,或者中间域名的证书已经过期。蜘蛛不一定每次都能走完,日志里就会出现同一批 URL 反复请求、却始终不进入目标页面的情况。
排查跳转问题时,先看日志里同一个 URL 的请求次数和最终落点,而不是只确认它有没有被抓过。
按什么顺序梳理跳转
- 用带跳转跟随的工具,对首页、栏目页、详情页各取几个样本,记录完整跳转链和每一跳的状态码。
- 找出链路超过两跳的 URL,优先处理入口级页面,例如首页、主导航和 Sitemap 里的地址。
- 统一协议与主机名:确定一个规范版本,其他版本直接一次 301 过去,不要串行跳转。
- 把 meta refresh 和 JS 跳转尽量换成服务端 301,尤其是永久迁移的场景。
- 检查跳转目标是否可抓取:不要跳到 robots.txt 禁止的路径、登录页或 404。
- 确认尾斜杠策略一致,内链、Sitemap、canonical 里使用的写法保持一致,不靠跳转来补齐。
容易忽略的几处
- 移动端跳转:用 JS 判断 UA 再跳 m 站,蜘蛛可能拿到桌面版内容,也可能拿到空白页;自适应或服务端判断更稳。
- 营销参数:跳转时把 utm、session 等参数一路带过去,容易生成大量蜘蛛不愿深抓的地址。
- HTTPS 证书:中间域证书错误会让跳转链断在某一跳,日志里表现为连接失败而不是 3xx。
- 循环跳转:A 跳 B、B 跳 A,蜘蛛在几跳之后就会停止,这一批 URL 长期无法进入正文。
改完怎么验证
调整完成后,用爬虫工具或日志观察一段时间:同一 URL 的请求次数是否下降,目标页面的抓取量是否上升,中间地址是否还频繁出现在抓取列表里。抓取量的变化通常滞后,不要指望改完当天就有明显区别。也不要把跳转链当成一次性就能解决的开关,站点改版、活动上线时都值得重新跑一遍检查。