将 www 重定向到非 www

Redirecting www to non-www

我正在尝试将所有流量从 HTTP 站点重定向到 HTTPS 站点,并将所有 www 流量重定向到非 www 站点。我的设置包括 HTTP 站点的 nginx.conf 文件,我已将 301 重定向规则添加到:

server {
    listen       80;
    listen       [::]:80;
    server_name
        sub.domain.com
        www.sub.domain.com
       ;

    return 301 https://sub.domain.com$request_uri;
    ...
}

我还有一个 https nginx.ssl.conf 文件,看起来像这样:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name  sub.domain.com www.sub.domain.com;

    ssl on;
    ...
}

通过此设置,我能够将所有 HTTP 流量重定向到 HTTPS,但如果我尝试在我的 nginx.ssl.conf 文件中添加重定向,我会收到 "too many redirects" 错误。

关于如何将所有内容重定向到我的 HTTPs、非 www 网站有什么建议吗?

您需要将 https 块拆分为两个域

server {
    listen       80;
    listen       [::]:80;
    server_name
        sub.domain.com
        www.sub.domain.com
       ;

    return 301 https://sub.domain.com$request_uri;
    ...
}


server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name  www.sub.domain.com;
    return 301 https://sub.domain.com$request_uri;
    ssl on;
    ...
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name  sub.domain.com;

    ssl on;
    ...
}