使用 Nginx return 302 实现临时维护跳转,确保访客看到维护页、搜索引擎识别为临时状态;配置需简洁(如 location / { return 302 /maintenance.html; }),维护页须真实存在并可访问,避免带参跳转和缓存问题。
临时维护跳转用 Nginx 302 重定向,核心是让访客看到维护页,同时明确告诉搜索引擎“这只是暂时的”,避免影响原页面的收录和权重。
最简洁、最可靠的方式是用 return 指令,直接返回状态码和目标路径:
示例配置(将所有请求临时跳转到维护页):
server {listen 80;server_name example.com;# 所有请求都跳转到 /maintenance.htmllocation / {return 302 /maintenance.html;}# 维护页本身不跳转,正常返回location = /maintenance.html {root /var/www/html;try_files $uri =404;}}
如果只需在某些情况下触发(比如仅限非管理员 IP 或特定时间段),可以用 if 判断 + return 302:
示例(仅当请求路径包含 /admin 时跳转):
location /admin {return 302 /maintenance.html;}
或限制 IP(如只让运维人员访问):
if ($remote_addr != "203.0.113.42") {return 302 /maintenance.html;}
维护跳转的目标是统一提示页,不建议保留 $request_uri:
return 302 https://example.com/maintenance.html$request_uri,会导致 URL 变成 /maintenance.html?next=/login 这类冗余形式302 是跳转指令,但最终要能展示内容。确保:
/maintenance.html 文件真实存在,放在 Nginx 的 root 目录下curl http://example.com/maintenance.html)不复杂但容易忽略。