scu 发表于 2020-12-14 15:56:13

http重定向到https

使用 lnmp 搭建的环境建站程序是 wordpress

域名 xxx.com 和 www.xxx.com
使用 lnmp ssl add 添加了免费证书

现在下面4个地址都可以访问
http://xxx.com
https://xxx.com
http://www.xxx.com
https://www.xxx.com

想实现 http 重定向到 https

方法一:

按照帖子 https://lnmp.org/faq/lnmp-nginx-301-rewrite.html 中操作:

在 listen 80 server 段
location ~ /.well-known {            allow all;      }
下面添加
location / {            return 301 https://$host$request_uri;    }
然后保存退出,重启nginx
/etc/init.d/nginx restart


提示:duplicate location / ...


#####################################################################

方法二:

还是找到/usr/local/nginx/conf/vhost中的配置文件(有2个)
一个是xxx.com.conf
一个是www.xxx.com.conf

在 xxx.com.conf 中 listen 80 server 段
在 server_name 下面
添加 return 301 https://$host$request_uri;
或者 return 301 https://xxx.com$request_uri; 都可以
保存退出,重启 nginx 后,http 重定向到 https 成功
浏览器不论输入 http://xxx.com 或 http://www.xxx.com 都自动跳转到 https 了。

######################################################

疑问一:

return 301 https://$host$request_uri; 和
return 301 https://xxx.com$request_uri; 有什么区别?

疑问二:

为啥我就改了 vhost 文件夹中 xxx.com.conf 一个文件
浏览器不论输入 http://xxx.com 或 http://www.xxx.com 都自动跳转到 https 成功了呢?
理论上应该把 vhost 文件夹中的两个文件都修改一下的啊











licess 发表于 2020-12-15 08:17:35

你不贴出配置文件来怎么找问题
duplicate location / 有可能是你之前有include 伪静态文件

$host 是根据域名判断
你单独写的域名就按填写的域名301

wordpress程序自带301,安装时的域名为主域名,不是主域名访问的会301跳转
页: [1]
查看完整版本: http重定向到https