每多一跳重定向就多一次请求往返,移动端感知延迟增加约 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 迁移后要清理旧跳转吗?
保留必要的一跳(旧域名到新域名)即可,中间的历史跳转可以合并直连;定期审计跳转规则,避免多年累积成冗长的链路。
速查在线工具箱