URL重定向是网站维护和SEO优化中常见的需求,Nginx提供了多种方式来实现URL重定向。以下是几种常见的配置方法:
server {
listen 80;
server_name example.com;
# 单个URL重定向
location = /old-url {
return 301 https://example.com/new-url;
}
# 目录重定向
location /old-dir/ {
return 301 https://example.com/new-dir/;
}
}
server {
listen 80;
server_name old-domain.com www.old-domain.com;
return 301 https://new-domain.com$request_uri;
}
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri;
}
# 非www重定向到www
server {
listen 80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
# www重定向到非www
server {
listen 80;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 80;
server_name example.com;
# 带参数的重定向
rewrite ^/product/([0-9]+)$ /products/$1 permanent;
# 条件重定向
if ($request_uri ~* "^/old-path/(.*)") {
rewrite ^ /new-path/$1 permanent;
}
# 文件扩展名重定向
rewrite ^(.*)\.htm$ $1.html permanent;
}
server {
listen 80;
server_name example.com;
location /old-page {
return 301 /new-page$is_args$args;
}
}
map $http_user_agent $redirect_uri {
default "";
"~*Mobile" "/mobile";
}
server {
listen 80;
server_name example.com;
if ($redirect_uri) {
return 301 $redirect_uri;
}
}
301 vs 302:
性能考虑:
return
而不是rewrite
,因为return
更高效测试:
nginx -t
测试配置是否正确curl -I http://example.com/old-url
缓存:
希望这些配置示例能帮助你实现所需的URL重定向功能。根据你的具体需求选择合适的重定向方式。