Nginx 提供了多种方式进行 URL 跳转/重定向,以下是常见的几种方法:
server {
listen 80;
server_name example.com;
# 301 永久重定向
location /old-url {
return 301 http://example.com/new-url;
}
# 302 临时重定向
location /temp-redirect {
return 302 http://example.com/temporary-location;
}
}
server {
listen 80;
server_name old-domain.com;
return 301 http://new-domain.com$request_uri;
}
server {
# 重写规则 - 将 /products/123 重写为 /product.php?id=123
rewrite ^/products/([0-9]+)$ /product.php?id=$1 last;
# 强制 HTTPS
if ($scheme != "https") {
rewrite ^ https://$host$request_uri? permanent;
}
# 移除 www 前缀
rewrite ^(.*) http://example.com$1 permanent;
}
server {
# 根据用户代理跳转
if ($http_user_agent ~* "bot|spider|crawler") {
return 403;
}
# 根据 IP 跳转
if ($remote_addr = "192.168.1.100") {
rewrite ^ /special-page break;
}
}
location /api/ {
proxy_pass http://backend-server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
server {
location / {
try_files $uri $uri/ @fallback;
}
location @fallback {
proxy_pass http://backend;
}
}
rewrite
指令比 return
更灵活但性能略低if
会影响性能bash
sudo nginx -t
sudo nginx -s reload
需要更具体的跳转场景配置方案,可以告诉我您的具体需求。