我有一个使用nginx作为Web服务器的Debian 9 VM,并且在我的配置中有以下内容。
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重定向的提示,并且正在使用上面的代码。
答案 0 :(得分:0)
您可以使用以下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。