nginx:仅将“www”子域名重定向到主域名?

nginx:仅将“www”子域名重定向到主域名?

更新:2013年4月20日,仍然没有找到解决方案,请帮忙

查看我的 nginx 配置,唯一可能是罪魁祸首的是:

server {
        listen 80;
        listen [::]:80 ipv6only=on default_server;
        rewrite ^(.*) https://$host$1 permanent;
}

实际上,我需要将“www”重定向到主域。

这可以在 nginx 中完成吗?

我对此事有点困惑,GoDaddy 支持每次都告诉我不同​​的事情。

我已将我的 www 域名转发到主域名,但它不起作用。

www.domain --> domain.com     Fails

但是任何其他子域名(例如测试)都可以毫无问题地转发到主域名。

test.domain --> domain.com    Ok

Godaddy 声称:

或者您需要设置一个映射到 @ 的 www CNAME。在您的主机上,您可以设置编码重定向https://domain.com在索引文件或.htacess 文件中。

我不明白如何实现这一点。

答案1

您首先应该配置您的 DNS 区域,如下所示:

@   IN A <IP ADDRESS>
www IN A <IP ADDRESS>

使用此配置,任何类似于www.example.com和的内容example.com都将被解析为IP ADDRESS您的 Web 服务器的 IP 地址。

然后,在您的 Nginx 配置中输入以下内容:

server {
  listen 80;
  server_name example.com;
  return 301 https://example.com$request_uri;
}
server {
  listen 80;
  listen 443 ssl;
  server_name www.example.com;
  return 301 https://example.com$request_uri;
}
server {
  listen 443 ssl;
  server_name example.com;
  ...
}

答案2

顺便说一句,此任务不需要正则表达式。例如,尝试此配置。

server {
        listen *:80 default_server;
        listen [::]:80 ipv6only=on default_server;
        return 301 https://domain.com$request_uri;
}

相关内容