站内改版、域名迁移或参数收敛之后,URL 结构往往会发生变化,旧地址通过跳转指向新地址。对人来说,浏览器会自动跟随,几乎无感;对搜索蜘蛛来说,每一次跳转都是一次独立的请求,链越长,同样一份抓取资源能覆盖到的页面就越少。
重定向如何消耗抓取入口
蜘蛛拿到一个 URL 后,如果返回 3xx,它需要再发起一次请求才能拿到真正的内容。三次跳转就等于四次请求,最终只换来一个页面的内容。当站点存在大量这类入口时,抓取队列会被一批批“过路请求”占满,新 URL 被发现和被访问的节奏都会因此变慢。
另一个影响是入口归并。如果同一份内容同时存在 A→B→C 与 A→C 两条路径,蜘蛛需要多花时间才能确认终态,中间地址还可能被单独当作一个可访问地址处理,让入口统计变得模糊。
常见的几种跳转形态
连续多跳
旧域名跳到新域名,新域名又跳到带 www 的地址,带 www 的地址再跳到统一小写路径。这种串联往往来自不同时期的配置叠加,每加一层就多一次请求。建议把跳转收敛到一跳,直接由源地址指向最终地址。
临时跳转长期化
302、307 本意是临时跳转,如果长期当作迁移手段使用,蜘蛛会反复回来确认原地址是否恢复。301、308 表达的是永久语义,更适合已经确定的迁移。关键不在于记住状态码编号,而在于让跳转类型和实际意图保持一致。
循环与断链
A 跳到 B、B 又跳回 A,或者跳转链末端的地址返回 404,都会让蜘蛛白跑一趟。前者通常出现在规则写错或缓存未刷新的时候,后者多见于路由改版后遗留的旧规则。
排查顺序
- 从抓取日志里筛出返回 3xx 的 URL,按出现次数排序,先看高频入口。
- 对每个入口用命令行工具跟随跳转,记录完整的 Location 链和最终状态码。
- 把链路长度大于一跳、以 4xx 收尾、或存在环路的记录单独列出。
- 对照服务器与 CDN 两侧的跳转规则,确认是否存在重复配置。
收敛与日常维护
- 迁移完成后,尽量让旧地址一跳到达终态,避免中间层长期保留。
- 内链和 Sitemap 直接指向最终地址,不要指向会跳转的旧路径。
- 跳转规则变更后清一次 CDN 缓存,防止旧规则继续命中。
- 把 3xx 的数量当作一个观测指标,定期看趋势,而不是等问题出现再处理。
什么时候跳转是必要的
并不是所有跳转都该被消除。地区或语言自动跳转、登录态下的路径切换,本身有业务价值,处理重点也不同:尽量让蜘蛛看到稳定的默认地址,而不是让它在多个地区版本之间来回跳;需要被单独识别的多语言版本,用独立 URL 加 hreflang 标注来区分,而不是靠跳转分流。
跳转本身不是问题,问题是链路变长之后没人再回头整理。把入口收敛到一跳,通常比单纯提高抓取频率更有效。
重定向的整理不必一次做完,从日志里的高频入口开始逐批收敛,观察几周抓取分布的变化,往往就能看到改善。