2293310198 发表于 2019-12-25 15:34:00

【已回应】301跟强制ssl的逻辑问题!

centos7.6
宝塔7.0.3
一个网站绑定两个域名
xxx.com
www.xxx.com
同时开启301将xxx.com跳转到www.xxx.com跟强制SSl
配置文件的内容是
    #HTTP_TO_HTTPS_START
    if ($server_port !~ 443){
      rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END
      #301-START
                if ($host ~ '^xcjson.com'){
                        return 301 https://www.xxx.com$request_uri;
                }
      #301-END

这样逻辑有问题啊,应该301在前面撒,不然我访问xxx.com会先跳https://xxx.com再跳https://www.xxx.com跳转三次,我要是301忘了加s那得跳转四次啊
平均一次浪费55ms的时间!!!
请修复下这个问题

大炮运维V587 发表于 2019-12-26 09:25:18

您好,这个是配置重复导致的,您看前面是基于端口
非443端口的都强制到https,
if ($server_port !~ 443){
      rewrite ^(/.*)$ https://$host$1 permanent;
    }

后面这个基于域名,包含 xcjson.com 的全部跳转到 https://www.xxx.com
               if ($host ~ '^xcjson.com'){
                        return 301 https://www.xxx.com$request_uri;
                }

实现的效果都一样的,有重复。

2293310198 发表于 2019-12-26 13:03:59

大炮运维V587 发表于 2019-12-26 09:25
您好,这个是配置重复导致的,您看前面是基于端口
非443端口的都强制到https,



不一样的,设置强制ssl是为了www.xxx.com跟xxx.com都能跳转到https
而301是为了xxx跳转到www.xxx.com

qq57544477 发表于 2019-12-26 19:53:31

请关闭强制SSL 或者 关闭判断443   强制SSL 你还 跳转SSL 不冲突?

Xeath 发表于 2019-12-28 14:37:42

本帖最后由 Xeath 于 2019-12-28 14:39 编辑

首先,这个只跳了两次,第一次由 http 跳转 https,第二次由 https 的未带 www. 子域跳转带 www. 的子域。
其次,你把你的未带 www. 跳转规则写在宝塔的规则之上,这样就只跳转了一次,即:http 的未带 www. 子域跳转到 https 的带 www. 子域上。
最后,这不是什么 bug。

2293310198 发表于 2019-12-28 14:46:16

Xeath 发表于 2019-12-28 14:37
首先,这个只跳了两次,第一次由 http 跳转 https,第二次由 https 的未带 www. 子域跳转带 www. 的子域。
...

我实测跳了三次,逻辑问题

2293310198 发表于 2019-12-28 14:46:48

qq57544477 发表于 2019-12-26 19:53
请关闭强制SSL 或者 关闭判断443   强制SSL 你还 跳转SSL 不冲突?

说了绑定两个域名了啊,一级跳二级

暮山 发表于 2019-12-30 18:40:33

将301前置的确可以省去一次跳转,301可以从不带www的http,一次性跳转到带www的https,这样就可以省去强制HTTPS了。
但如果将强制HTTPS前置,跳端口和跳www就无法一次完成。

HuangShunFu 发表于 2021-2-5 11:21:13

楼主 我也发现有这问题 请问怎么解决的
https://www.bt.cn/bbs/thread-63851-1-1.html
页: [1]
查看完整版本: 【已回应】301跟强制ssl的逻辑问题!