Nginx临时活动页跳转应使用return 302指令,如return 302 https://event.newsite.com$request_uri;,确保保留完整URL、避免301误配、禁用rewrite以提升效率与可靠性。

用 Nginx 配置临时活动页面跳转,核心是返回 302 Found 状态码,并确保不干扰搜索引擎对原页面的索引。推荐直接使用 return 302 指令,简洁、高效、语义明确。
只配一行就能生效(推荐写法)
server {
listen 80;
server_name promo.example.com;
return 302 https://event.newsite.com$uri?$args;
}-
$uri保留路径(不含查询参数) -
$args显式拼接查询参数,避免丢失?utm_source=ad这类追踪信息 - 不用
rewrite+redirect,避免多一层解析开销和潜在匹配问题
常见变体与注意事项
-
跳转带完整原始请求(含 query string)
直接用$request_uri最稳妥:return 302 https://event.newsite.com$request_uri;
-
限定只对特定路径做跳转
例如仅/flash-sale下所有请求临时跳转:location /flash-sale { return 302 https://event.newsite.com/sale-2024$request_uri; } -
HTTPS 入口下跳转,保持协议一致
若用户访问的是https://promo.example.com,目标也应走 HTTPS:return 302 https://event.newsite.com$request_uri;
不要写死
http://,否则可能触发混合内容警告或浏览器拦截。 避免误配成 301
302 必须显式写302,不要漏掉数字或错写成301;也不要依赖rewrite ... redirect的默认行为(虽等效,但可读性差、易混淆)。
为什么不用 rewrite?rewrite ^/(.*)$ https://.../$1 redirect; 功能等价,但:
- 多一次正则匹配开销
-
$1在空路径时可能为空,不如$request_uri可靠 -
redirect标志隐含 302,不如return 302直观可控
上线前快速验证
用 curl 检查响应头:
curl -I http://promo.example.com/ # 应看到:HTTP/1.1 302 Found # Location: https://event.newsite.com/
不复杂但容易忽略细节。


















