【问题标题】:Need help modifying https redirect需要帮助修改 https 重定向
【发布时间】:2019-05-11 18:16:59
【问题描述】:

我有一个 Debian 9 虚拟机,使用 nginx 作为我的 Web 服务器,并且在我的配置中有以下内容。

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

现在,如果我导航到 example.com 或 www.example.com,它会重定向到 https://www.example.com

但是,如果我在地址框中键入以下内容或类似内容:example.com/site/about,那么它会尝试重定向到 https://example.com/site/about(没有 www),Chrome 和 Firefox 会警告我该站点没有针对那个链接。

我正在使用 CertBot。它的服务器配置包含:

listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

如何让example.com/site/about 重定向到https://www.example.com/site/about

我相信最初,我有一个 if 条件和一个正则表达式,但我在 nginx 网站上看到了简化 https 重定向的提示,并且正在使用上面的代码。

【问题讨论】:

  • 您没有没有 www 的 server_name,因此找不到
  • @ShawnC。好的,我添加了一个不带 www 的块。并将重定向设置为 https//www.$host$requesturi。对吗?
  • $host 设置为请求中的主机名。如果要使用 server_name 指令中的值,请使用 $server_name

标签: nginx redirect https


【解决方案1】:

您可以使用这种 nginx 服务器的变体:

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

它返回带有 www 的 https url。此外,如果您可以访问您的名称服务器,您可以进行 CNAME 记录,将 no-www 重定向到 www。

【讨论】:

  • 请考虑在您的答案中添加简短说明。 StackOverflow 是一个帮助人们进一步提高技能的网站,而不仅仅是一个代码共享平台。留下解释有助于他们了解如何解决问题。 :)
猜你喜欢
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多