Nginx提供了多种方式来实现URL重定向,以下是几种常见的方法:
server {
listen 80;
server_name olddomain.com;
return 301 http://newdomain.com$request_uri;
}
301
表示永久重定向,302
表示临时重定向$request_uri
会保留原始请求的URI部分server {
listen 80;
server_name example.com;
# 重定向特定路径
rewrite ^/oldpath$ /newpath permanent;
# 正则表达式匹配重定向
rewrite ^/user/(\d+)$ /profile/$1 permanent;
}
permanent
表示301重定向,redirect
表示302重定向server {
listen 80;
server_name oldsite.com www.oldsite.com;
return 301 http://newsite.com;
}
# 非www重定向到www
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
# www重定向到非www
server {
listen 80;
server_name www.example.com;
return 301 http://example.com$request_uri;
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
# 根据用户代理重定向
server {
listen 80;
server_name example.com;
if ($http_user_agent ~* "bot") {
return 301 http://bot.example.com$request_uri;
}
}
curl -I http://example.com
检查重定向响应头nginx -s reload
需要更具体的重定向场景或遇到问题,可以提供更多细节我会给出针对性建议。