redirect 标记使 Nginx 返回 302 临时重定向响应,将重写后的 URL 放入 Location 头,浏览器地址栏跳转且不缓存;必须单独使用,不可与 last、break 等混用。

在 Nginx 的 rewrite 指令中,使用 redirect 标记可以返回 HTTP 302 临时重定向响应。
rewrite 中的 redirect 标记作用
redirect 是 rewrite 指令的可选标记之一,它会让 Nginx 返回 302 状态码,并将重写后的 URL 放入 Location 响应头。这是最常用、最安全的临时跳转方式。
- 不加任何标记时,
rewrite默认为内部重写(无状态码变化,URL 地址栏不改变) - 加上
redirect,浏览器会收到 302 响应,地址栏跳转到新地址 - 与
permanent(返回 301)不同,redirect不会被浏览器缓存跳转逻辑,适合测试或短期调整
基本语法和写法示例
格式为:
rewrite redirect;
例如,把所有 /old-page 请求临时跳转到 /new-page:
rewrite ^/old-page$ /new-page redirect;
注意:redirect 必须写在分号前,且不能与其他标记(如 last、break)混用。
redirect 和 return 302 的区别
虽然效果相似,但两者适用场景不同:
-
rewrite ... redirect;:适用于需要正则匹配 + 动态替换路径的场景,比如提取变量后拼接新 URL -
return 302 /new-url;:更轻量、执行更快,适合静态跳转或简单条件判断(配合if使用需谨慎) - 如果只是固定跳转,推荐用
return 302;如果要基于 URI 正则重写再跳转,用rewrite ... redirect
常见注意事项
使用 redirect 时要注意几点:
- 目标 URL 如果是相对路径(如
/new-page),Nginx 会自动补全为完整 URL(含协议和域名) - 若需跳转到外部域名,必须写完整 URL(如
https://example.com/abc),否则会被当作相对路径处理 -
rewrite在server或location块中生效,优先级受 location 匹配顺序影响 - 避免在同一个配置块中多次
rewrite+redirect,可能导致循环跳转(Nginx 会限制最多 5 次重定向)


















