必须用permanent(301):域名更换、全站HTTPS启用、URL结构永久调整、多域名归一;该用redirect(302):临时维护、A/B测试、灰度发布、活动专题页上线期;误用会导致SEO权重不传递或循环跳转。

选 redirect 还是 permanent,关键看这次跳转是不是“长期有效”——不是看你想不想改,而是看搜索引擎和用户浏览器该不该记住它。
什么时候必须用 permanent(301)
当目标地址已确定为长期新位置,且你希望旧链接的流量、收藏夹、SEO权重全部平稳过渡过去时,就该用 permanent:
- 域名更换:比如从
old.com全量迁移到new.com - 全站 HTTPS 强制启用:所有
http://请求跳转到对应https://地址 - URL 结构永久调整:如把
/blog/post/123统一改为/articles/123.html - 多域名归一:
example.com和www.example.com统一指向其中某一个主域
什么时候该用 redirect(302)
只要跳转只是阶段性的、测试性的,或未来可能随时撤回,就必须用 redirect:
- 网站临时维护页:返回 503 不够友好,用 302 跳到 maintenance.html,恢复后删掉规则即可
- A/B 测试分流:把部分用户临时导向新版页面,不影响原 URL 的索引和缓存
- 灰度发布接口迁移:旧路径暂不废弃,先 302 到新服务验证稳定性
- 活动专题页上线期:活动结束就下线,无需让搜索引擎长期收录该跳转
两个常见误用陷阱
用错 flag 不仅影响 SEO,还可能引发循环跳转或客户端行为异常:
- 把 302 当 301 用:比如域名切换初期怕出错,先配 redirect。结果搜索引擎持续抓取旧地址,权重不传递,等想换 permanent 时,旧链接排名已大幅下滑
- 在 if 块里混用 rewrite + proxy_pass:例如判断 UA 后 302 跳转,但没加 break 或 last,导致请求继续走 proxy_pass,最终返回 500 或内容错乱
快速判断口诀
写配置前默念一句:“这个跳转,三个月后还要存在吗?如果答案是否定的,就用 redirect;如果是肯定的,就用 permanent。”


















