SEO 百科

链式重定向

本页目录

链式重定向

链式重定向 指一个网址要经过两次或更多次跳转才到达最终地址,链路写成 A 跳到 B、B 再跳到 C[4]。它本身由一串普通重定向接成,问题出在跳数上:每多一跳,抓取工具就多花一次往返,超过引擎允许的次数还会直接失败[2]。做迁移的人需要知道什么时候该把链条压成一条。

链条的形成

链条多数不是有意设计的,而是规则层层叠加的结果。常见的组合有几种:

  • 站点先把 http 请求跳成 https,后来又加一条规则处理 www 的有无,请求在两跳之间穿行。
  • 迁移时把旧网址指向一个中间网址,中间网址再指向新网址,而中间这一层没有清理。
  • CMS 的重定向插件与服务器规则各写一条,两条都参与,请求就多走一跳。

引擎的跟随上限

Google 对跳数有明确上限。文档写明,抓取工具最多跟十次重定向,十次之内没有取到内容,就会报重定向错误[2]。上限之外的地址取不到内容,也就谈不上收录。

百度给出的上限更低。抓取诊断手册说明,连续跳转次数超过五次会发生重定向错误,导致抓取失败[3]。链条越长,越容易撞上这条线。

Yandex 允许链条,并说明最终目标页会被收录,之前已知的旧页面会从搜索里去掉[1]。它同时建议,能用一次跳转完成就不要把链子拉长。

该压成一条的理由

链条每多一跳,抓取工具就要多发出一次请求,取到内容的时间随之拉长[2]。搜索引擎愿意花在一个站点上的抓取次数有限,消耗在跳转上的部分挤占的是正常页面的配额。

除抓取之外,链条还会模糊内链的指向。内链、站点地图与规范标签都应当直接指向最终地址。规范标签是 <link rel="canonical"> 那一行,用来声明哪个网址是正式版本。指向中间地址等于把抓取一次次引向跳转[4]。

配置示例

把两跳压成一条,Nginx 让旧地址直接 return 到最终地址[5]。

# 链条写法:old 跳到 tmp,tmp 再跳到 new
location = /old.html { return 301 https://www.example.com/tmp.html; }
location = /tmp.html { return 301 https://www.example.com/new.html; }

# 压成一条:old 直接指向 new
location = /old.html { return 301 https://www.example.com/new.html; }

Apache 把中间那一条删掉,让一条 RewriteRule 落到最终地址[5]。

# 压成一条:old 直接指向 new
RewriteEngine On
RewriteRule ^/old\.html$ https://www.example.com/new.html [R=301,L]

改完用一次 curl -IL 核对,确认中间不再返回 301。

常见误用

第一种是把新的迁移规则叠在旧规则之上,不清理上一次留下的规则。每加一次改动就多一层跳转,链条在无人察觉中变长[5]。

第二种是内链与站点地图仍指向中间地址。抓取工具顺着内链走,一次次经过跳转,取到内容的时间被拉长[4]。

第三种是把跳数上限当成软提醒。超过上限的地址直接抓取失败,内容进不了索引[2]。

第四种是链条里混着临时跳转。302 那一档信号弱,链条一长,旧地址会长期留在结果里[2]。

附录

参见

参考资料

官方(境外)

  1. 《Changing your site's structure and design》,Yandex Webmaster。
  2. 《HTTP 状态代码以及网络连接错误和 DNS 错误对 Google 搜索有何影响》,Google 搜索中心。

官方(国内)

  1. 《平台工具使用手册(抓取诊断)》,百度搜索资源平台,2020-08-14 更新。

第三方

  1. 《SEO 重定向:一个简单(但完整)的指南》,Ahrefs,2022-03-02。
  2. 《Redirects: How To Use, SEO Impact & Types (301 vs 302)》,Moz,2025-03-24 更新。

外部链接

无。