一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

旧域名停止使用时 Nginx 301 重定向如何设

时间:2026-08-17 12:20:49 编辑:袖梨 来源:一聚教程网

旧域名停用时需用Nginx return指令配置301重定向,分别监听80和443端口(后者需SSL证书),目标统一为https://new-site.com$request_uri,并将规则拆分为独立conf文件通过include引入,修改后须执行nginx -t、nginx -T验证及curl测试。

旧域名停用时,Nginx 的 301 重定向要一次性覆盖所有访问入口,确保用户和搜索引擎都能无缝跳转到新站,同时避免配置混乱或 HTTPS 失效。

只用 return 指令,不写 rewrite

return 比 rewrite 更轻量、更安全,执行更快,且不会触发内部重匹配。直接返回状态码和目标地址即可:

  1. HTTP 跳转:监听 80 端口,server_name 设为所有旧域名(含 www 和无 www 变体)
  2. HTTPS 跳转:必须单独配一个 server 块监听 443,且 ssl_certificate 和 key 要能验证 old-site.com(可用通配符或 SAN 证书)
  3. 目标地址统一用 https://new-site.com$request_uri,保留原始路径和参数

把规则抽成独立文件,用 include 管理

不要把跳转逻辑硬塞进主站配置里。推荐在 /etc/nginx/conf.d/ 下新建:

  1. /etc/nginx/conf.d/redirect-old-site.conf
  2. 里面只放两个 server 块:一个 listen 80,一个 listen 443 ssl
  3. 主配置(如 sites-available/default)中,在 http 块末尾或对应 server 块外加一行:include /etc/nginx/conf.d/redirect-old-site.conf;

多旧域名就分多个文件,方便开关

如果有 old1.com、old2.com、legacy.net 等多个停用域名,每个都建独立 conf 文件:

  1. /etc/nginx/conf.d/redirect-old1.conf
  2. /etc/nginx/conf.d/redirect-old2.conf
  3. 临时禁用某条规则?直接重命名,比如改成 redirect-old1.conf.off,Nginx reload 后自动忽略

验证三步不能少

改完别急着 reload,按顺序检查:

  1. 运行 nginx -t:确认语法正确,include 路径存在、文件可读
  2. 运行 nginx -T | grep -A 5 "old-site.com":看实际加载的配置里有没有你写的 server 块
  3. curl -I http://old-site.com/test?x=1curl -I https://old-site.com/test 分别测试,响应头必须含 301 Moved Permanently 和正确的 Location

热门栏目