




























在Nginx中设置301永久重定向是常见的SEO优化、网站迁移或域名切换操作。以下是不同场景的详细配置指南:
一、基础301重定向配置
整站跳转(旧域名 → 新域名)
# 处理HTTP请求server { listen 80; server_name old-domain.com www.old-domain.com; return 301 https://new-domain.com$request_uri;}# 处理HTTPS请求(需保留SSL证书)server { listen 443 ssl; server_name old-domain.com www.old-domain.com; ssl_certificate /path/to/old-domain.crt; ssl_certificate_key /path/to/old-domain.key; return 301 https://new-domain.com$request_uri;}说明:
分开处理HTTP(80端口)和HTTPS(443端口)请求。
旧域名的HTTPS配置需保留有效SSL证书,否则浏览器会报证书错误。
location = /old-page.html { return 301 https://new-domain.com/new-page.html;}说明:
使用 = 实现精确匹配,避免模糊匹配问题。
二、高级场景配置
路径模式匹配
location ~ ^/blog/(2020)/(.*)$ { return 301 https://new-domain.com/archive/$1/$2;}说明:
将 /blog/2020/xxx 重定向到 /archive/2020/xxx。
$1 和 $2 分别对应正则中的捕获组。
2. 带参数保留跳转
location /product { if ($arg_id ~ ^(\d+)$) { return 301 /new-product/$1$is_args$args; } return 301 https://new-domain.com/; # 默认跳转}说明:
使用正则验证id参数为数字,$1为匹配结果。
$is_args$args 保留原始URL参数(如?color=red)。
3. 多域名合并跳转
server { listen 80; listen 443 ssl; server_name old1.com old2.com www.old1.com; ssl_certificate /path/to/cert.pem; # 若需处理HTTPS return 301 https://main-domain.com$request_uri;}说明:
统一处理多个旧域名的HTTP/HTTPS请求。
三、特殊协议处理
1. HTTP强制跳转HTTPS
server { listen 80; server_name example.com; return 301 https://example.com$request_uri;}2. 非www跳转www 2. 非 www 跳转
# HTTP跳转server { listen 80; server_name example.com; return 301 https://www.example.com$request_uri;}# HTTPS跳转(防止HTTPS非www直接访问)server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/cert.pem; return 301 https://www.example.com$request_uri;}四、调试与验证
1. 配置检查:
nginx -t # 检查语法nginx -s reload # 重载配置2. CURL测试:
curl -I http://old-domain.com/old-page# 检查响应头中的 Location 和状态码SSL证书:
旧域名的HTTPS重定向需配置有效证书,否则用户会先看到证书错误。
循环跳转:
避免 www → non-www → www 循环,确保重定向逻辑单向。
参数处理:
使用 $is_args$args 保留原参数(如 ?key=value)。
性能优化:
优先用 return 而非 rewrite,减少正则复杂度。
SEO建议:
在Google Search Console提交新域名,并确保内容一致性。
完整配置示例:多条件重定向
# 多条件重定向server { listen 80; server_name legacy-site.com www.legacy-site.com; # 旧博客按年份归档 location ~ ^/blog/(2019|2020)/(.*)$ { return 301 https://new-site.com/archive/$1/$2; } # 商品ID跳转(带参数验证) location /product { if ($arg_id ~ ^(\d+)$) { return 301 https://new-site.com/item/$1; } return 301 https://new-site.com/; # 默认跳转 } # 全站默认跳转 return 301 https://new-site.com$request_uri;}通过以上配置,可确保重定向高效、准确,同时规避常见陷阱。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。