nginx 301重定向核心是将所有旧域名请求(含协议、子域、路径及参数)永久跳转至新域名对应地址并保留$request_uri,推荐单server块监听80端口统一跳转,https场景需增配443端口server块并提供旧域名有效ssl证书,多旧域名可合并为一条正则server_name规则,配置后须用curl验证响应头及location字段。

更换顶级域名时,Nginx 的 301 重定向核心是让所有旧域名的请求(含 HTTP/HTTPS、www/裸域、各种路径和参数)全部永久跳转到新域名对应地址,同时保持 $request_uri 不丢失,确保 SEO 权重平滑迁移。
只配一个 server 块:最简方式(推荐)
适用于旧域名不再需要 HTTPS 或 SSL 证书的情况。只需监听 80 端口,统一跳转:
- 打开站点配置文件(如 /www/server/panel/vhost/nginx/old.com.conf 或 /etc/nginx/conf.d/old.com.conf)
- 在
server块中写入:
server {
listen 80;
server_name old.com www.old.com;
return 301 https://new.com$request_uri;
}
保存后执行 nginx -t && nginx -s reload 即可生效。所有 http://old.com、http://www.old.com 请求都会跳转到 https://new.com/原路径。
兼顾 HTTPS:双 server 块配置
若旧域名已有 HTTPS 流量或需兼容访问,建议同时处理 443 端口:
- 新增一个监听 443 的
server块(需已配置 SSL 证书):
server {
listen 443 ssl http2;
server_name old.com www.old.com;
ssl_certificate /path/to/old.crt;
ssl_certificate_key /path/to/old.key;
return 301 https://new.com$request_uri;
}
注意:不要把新域名的证书配在这里,只需让旧域名能响应 HTTPS 请求并立即跳走即可。证书可用旧域名的有效证书,或临时自签(不影响跳转逻辑)。
合并多个旧域名跳同一新域名
如果要将 old1.com、old2.net、www.old3.org 全部跳到 https://new.com,可分别建多个 server 块,或用正则匹配简化:
- 利用
server_name支持通配符或正则(Nginx ≥1.9.0):
server {
listen 80;
server_name ~^(www\.)?(old1\.com|old2\.net|old3\.org)$;
return 301 https://new.com$request_uri;
}
这样一条规则覆盖多个旧域名,避免重复配置。记得测试正则是否准确,防止误匹配。
验证与注意事项
- 用
curl -I http://old.com/about查看响应头,确认返回HTTP/1.1 301 Moved Permanently和Location: https://new.com/about - 检查跳转是否保留查询参数(如
?utm_source=test),关键看是否用了$request_uri而非$uri - 新域名上线前,确保其 DNS 已解析、SSL 证书有效、网站内容就绪,否则用户会跳进“无法访问”页面
- 搜索引擎收录更新需数天至数周,建议同步在新站提交 Sitemap 并在 Google Search Console 中设置变更地址











