【问题标题】:Redirecting www to non-www将 www 重定向到非 www
【发布时间】:2018-06-06 07:06:32
【问题描述】:

我正在尝试将所有流量从 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 文件中添加重定向,我会收到“重定向过多”错误。

关于如何将所有内容重定向到我的 HTTPS、非 www 站点的任何建议?

【问题讨论】:

  • 你添加了什么重定向?
  • 我尝试在我的 nginx.ssl.conf 中添加与我的 nginx.conf 相同的重定向:“return 301 sub.domain.com$request_uri;”
  • 请运行nginx -T,然后发布完整的配置。您只需要在监听 80 内进行重定向,这就是 http 到 https 重定向所需要的。不知道为什么你想在块外做同样的事情
  • 但是 www 到非 www 的重定向怎么样?我已经将 HTTP 重定向到 HTTPS,但该站点仍然从 www 子域返回 200。
  • 将你的 https 块一分为二。一个带有www.sub.domain.com 的块并在其中进行重定向。另一个块将保留您当前的逻辑

标签: ssl redirect nginx https http-status-code-301


【解决方案1】:

您需要将您的 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;
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-09
    • 2021-08-03
    • 2011-11-05
    • 2011-12-01
    • 2013-12-20
    • 2022-03-04
    • 2018-05-01
    相关资源
    最近更新 更多