在 Linux 下使用 Nginx 做重定向,常见方式主要有以下几种,按使用场景说明:
return 做重定向(推荐)server {
listen 80;
server_name old.example.com;
location / {
return 302 https://new.example.com$request_uri;
}
}
return 301 https://new.example.com$request_uri;
✅ 优点:简单、高效、官方推荐
rewrite 做重定向server {
listen 80;
server_name old.example.com;
rewrite ^(.*)$ https://new.example.com$1 permanent;
}
if ($host = old.example.com) {
return 301 https://new.example.com$request_uri;
}
⚠️ 注意:if 在 Nginx 中容易出错,能用 server 或 return 就别用 if
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 80;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
location /old/ {
return 301 /new/;
}
return 301 https://example.com/new$request_uri;
# 检查配置
nginx -t
# 重新加载
systemctl reload nginx
# 或
nginx -s reload
| 类型 | 用途 |
|---|---|
| 301 | 永久迁移、SEO |
| 302 | 临时跳转、测试 |
如果你有具体场景(比如:旧域名转新域名、子目录跳转、带参数、Docker 环境),可以直接告诉我,我给你写完整配置。