如果你只从浏览器角度看,重定向就是地址栏一闪,页面到了。但从搜索蜘蛛的视角看,每一次重定向都是一次新的 URL 发现:它先请求 A,拿到 301 或 302,再请求 B,如果 B 又跳 C,它还得继续走。原本一次抓取能完成的事,被拆成了多次。
重定向不是错误,但它会改变抓取路径
合理使用重定向是正常的:HTTP 跳 HTTPS、www 跳非 www、旧商品页跳新商品页,都需要它。问题在于,蜘蛛的抓取预算和连接资源有限,每多一跳,就多一次 DNS 解析、连接建立和响应等待。路径越长,蜘蛛在同一个目标页上投入的有效抓取就越少。
更隐蔽的是,重定向会让蜘蛛把多个 URL 都当作“被发现过”的地址。如果这些地址长期返回跳转,它们可能持续占用抓取机会,却不产生可索引的内容。
301 与 302:永久和临时,对路径的影响不同
301 表示永久迁移,蜘蛛通常会把原 URL 的权重和抓取需求逐步转移到新 URL,后续更倾向于直接访问目标地址。302、307 表示临时跳转,蜘蛛会保留原 URL,并可能反复回来确认。若把 302 当 301 长期使用,容易让蜘蛛在旧地址上反复试探,抓取路径迟迟不能收敛。
建议:站点结构变化、域名迁移、URL 规则调整,用 301;活动页、短期限时跳转,用 302。不要让临时跳转变成永久状态。
链式重定向与循环重定向:抓取路径上的连续弯道
链式重定向指 A→B→C→D 这种多级跳转。每增加一级,蜘蛛就要多一次请求。如果链中出现超时、5xx 或 robots.txt 拦截,后面的目标页可能永远走不到。循环重定向更糟:A→B→A,蜘蛛会在原地打转,最终放弃,并把这条路径标记为不稳定。
常见的链式来源包括:旧域名跳新域名,新域名又跳带 www 版本,带 www 版本再跳 HTTPS;或者 CDN、负载均衡、应用层各配置了一次跳转。每层都觉得自己只做了一次,蜘蛛却收到了一串。
把重定向链收短:几个可落地的检查点
- 直接跳终点:旧 URL 尽量一步跳到最终可访问的规范 URL,不要中间再经过临时地址。
- 统一规范化规则:协议、主机名、末尾斜杠、大小写只保留一种形式,避免蜘蛛在变体之间来回跳。
- 检查内链和 Sitemap:内链和 Sitemap 里尽量写最终地址,不要写会跳转的旧地址。否则蜘蛛每次都要多走一步。
- 关注服务器稳定性:重定向过程中的 5xx、超时和限流,会让蜘蛛降低对整条路径的信任,回访更保守。
- 用日志验证:看蜘蛛访问日志里哪些 URL 频繁出现 301/302,顺着日志把链路画出来,比只看配置文件更接近真实抓取路径。
重定向与 URL 发现的关系
蜘蛛发现 URL 的入口很多:内链、Sitemap、外链、历史记录、API 返回等。重定向会把这些入口指向的地址再“翻译”一次。如果翻译层数太多,URL 发现效率就会下降。对站点运营来说,目标不是消灭所有重定向,而是让每一条重定向都有明确终点,并且终点是稳定、可抓取、可索引的页面。
把重定向当成抓取路径的一部分来管理:能一步到位,就不要让蜘蛛绕路。
最后,定期抽查主要入口页和栏目页的跳转情况,尤其是改版、换域名、调整 CDN 之后。蜘蛛不会抱怨绕路,它只会把时间花在别处。