首页 > 解决方案 > 使用 Nginx 将旧域重定向到新域,具有相同的子域和 URI

问题描述

我们有两个指向同一服务器的域。我们最近使用了一个品牌,因此我们希望拥有它,以便 URL 从 old_domain.com 更改为 new_domain.com。

我也想拥有它,以便用户最初输入的子域和 URI 也被使用。

例如 -

https://beta.old_domain.com/my_profile

redirects to

https://beta.new_domain.com/my_profile

我尝试了几种解决方案,但正在努力让它发挥作用。最新的我是这样的——

/etc/nginx/sites-available/old_domain.com

server {
  listen 80;
  listen 443 ssl;
  server_name old_domain.com;

  if ($host ~ (.*)\.old_domain\.com(.*)) {
    set $subdomain $1;
    return 301 $subdomain.new_domain.com$request_uri;
  }
}

标签: nginx

解决方案


我通过创建两个不同server的块来做到这一点,一个用于主域,另一个用于重定向子域上的请求:

server {
    server_name old-domain.com;
    return 301 $scheme://new-domain.com$request_uri;
}

server {
    server_name ~^(?<name>\w+)\.old-domain\.com$;
    return 301 $scheme://$name.new-domain.com/;
}


推荐阅读