Dynadot 搬瓦工 腾讯云

宝塔面板开启 HTTPS 强制跳转后实现指定目录不强制跳转 HTTPS 教程

Sider GigsGigsCloud

前言

虽然使用 HTTPS 更加安全,但在一些特定情况下却只能使用 HTTP 不能使用 HTTPS,在宝塔面板中开启 HTTPS 强制跳转后全站都会跳转到 HTTPS,并没有例外的选项,本来以为加一条 if 指定条件不跳转就行了,结果不能实现,原来 Nginx 不支持 if 逻辑和嵌套语法,最后找了不少资料,终于可以实现开启强制跳转后指定目录不跳转 HTTPS 的方案了。

方案

宝塔面板开启强制跳转 HTTPS 后 Nginx 的配置文件是如下代码:

    if ($server_port !~ 443){
    rewrite ^(/.*)$ https://$host$1 permanent;
}

然后我们在 网站-设置-配置文件 中用以下代码替换掉上面的代码即可;

    set $flag 0;
if ($server_port !~ 443) {
    set $flag "${flag}1";
}
if ($request_uri !~ "/ONE"){
    set $flag "${flag}2";
}
if ($flag = "012"){
     rewrite ^(.*)$  https://$host$1 permanent;
}

代码解释:满足非443端口,并且域名目录非 /ONE 时跳转,包含 /ONE 目录不跳转。

说明

我们指定不跳转的目录是 /ONE 但如果有同名目录,比如 /ONEA/ONEBB 同样也不会跳转。

参考:https://cloud.tencent.com/developer/article/1606873

Dynadot Hostwinds
赞(1)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《宝塔面板开启 HTTPS 强制跳转后实现指定目录不强制跳转 HTTPS 教程
文章链接:https://oldtang.com/11690.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。