重定向链与循环检测器

本地处理
  • 打赏支持
  • 分享链接
  • 反馈建议
每多一跳重定向就多一次请求往返,移动端感知延迟增加约 100–200 毫秒,还会稀释页面权重。超过 3 跳就该合并,出现循环则页面直接打不开。
-
跳转次数
-
HTTPS 升级
-
跨域跳转
-
循环检测
步骤来源目标类型
从起始 URL 出发,沿映射表逐跳前进并记录已访问集合;一旦回到已访问过的 URL 即判定为循环。跨域判定会忽略 www. 前缀差异(example.com 与 www.example.com 视为同域)。

重定向为什么越少越好

重定向的逻辑很干净:服务器返回 3xx,浏览器再发起一次完整请求。但对用户来说,每一次跳转都是一次额外的网络往返——DNS 查询、TCP 握手、TLS 协商、等待首字节,全部重来一遍。三跳下来,移动端用户能明显感觉到卡顿。

常见的坏味道

症状典型成因处理
http → https → www → 路径三条规则各自为政合并为一条直跳最终地址
跳数大于 3历史规则叠加未清理逐条收敛到终点
302 用于永久迁移误用临时重定向永久迁移一律用 301
重定向成环A→B、B→A 互相指向页面直接报错,必须修复

状态码怎么选

  • 301:永久迁移。会传递权重,浏览器和搜索引擎会长期缓存。域名更换、HTTP 转 HTTPS 用它。
  • 302 / 307:临时跳转。不传递权重,适合活动页、A/B 测试。307 会保留原始请求方法。
  • 308:永久跳转且保留请求方法,适合 API 端点迁移。

一个容易被忽略的坑:301 会被浏览器长期缓存。如果配错了地址,用户可能在很长时间内都跳向错误的页面,而你改了服务器配置也未必立刻生效——测试 301 规则时建议用无痕窗口。

https 升级的通病

「HTTP 跳 HTTPS」和「无 www 跳有 www」是两条独立规则,如果都保留,很容易形成两跳甚至三跳。标准做法是一次性跳到终点:http://example.com/a 直接 301 到 https://www.example.com/a,而不是先跳到 https://example.com/a 再跳一层。

你可能还想问

重定向链太长有什么影响?

每次跳转都增加延迟并可能丢失部分权重;一般建议链长不超过 3 跳,搜索引擎抓取预算也有限,应尽快直连最终地址。

循环重定向怎么造成的?

多为规则互相冲突(如同时配置了 http 跳 https 与 https 跳 http)、或用错相对与绝对地址;排查时逐跳记录状态码与目标地址即可定位。

https 迁移后要清理旧跳转吗?

保留必要的一跳(旧域名到新域名)即可,中间的历史跳转可以合并直连;定期审计跳转规则,避免多年累积成冗长的链路。