将主机重写为其他主机,但存在一些复杂性

将主机重写为其他主机,但存在一些复杂性

我有一个 domiy.com 网站,现在我要将其名称更改为 namedar.com。我想对所有针对 domiy.com(或 nametyper.com)的请求进行 301 重定向,以便它们返回请求 URI 完整的 namedar.com。

我尝试过简单地将所有内容重定向到namedar.com,但是当请求到达namedar.com时,这会导致重定向循环。

rewrite ^ $scheme://nametyper.com$request_uri permanent; # Doesn't work

我还想保持配置设置,以便所有“www”请求都重定向到非 www 版本。

nginx.conf现在的样子是这样的:

server {
  server_name namedar.com www.namedar.com domiy.com www.domiy.com nametyper.com www.nametyper.com;

  # Remove all 'www.' prefixes.
  if ($host ~* www\.(.*)) {
    set $host_without_www $1;
    rewrite ^(.*)$ $scheme://$host_without_www$1 permanent;
  }
}

我该如何编写rewrite指令来实现这一点?

答案1

请让我将您的顾虑分为两个步骤......

步骤 1:将 www 改为非 www

服务器 {
  服务器名称 www.域名.com;
  返回 301 $scheme://domainname.com$request_uri;
}

服务器 {
  服务器名称域名.com;
  # [...] 常规块和指令
}

第 2 步:first_domain.com 到 second_domain.com

服务器 {
  服务器名称 first_domain.com www.first_domain.com;
  返回 301 $scheme://second_domain.com$request_uri;
}

您可以修改上述步骤,使其适用于任意数量的域。此外,您还可以将两者结合起来,在一个步骤中完成。

顺便说一下,在 Nginx 中,如果被视为邪恶

相关内容