【发布时间】: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。