干货 | 宝塔(Nginx)开启强制SSL后如何实现二级目录不强制跳转

下文转自loc的 ukmg,本文记录备用。

起因:

看到有坛友发帖询问,如何让主域名自动跳转https,但是某个目录例如/123 不强制跳转 https

思路:

第一印象的直接添加额外一条规则,失败了。。    原因。nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法

替代方案:

set $flag 0;
if ($server_port !~ 443) {
        set $flag "${flag}1";
}

if ($request_uri !~ "123"){
        set $flag "${flag}2";
}

if ($flag = "012"){
         rewrite ^(.*)$  https://$host$1 permanent;
}

解释:满足非443 端口 并且 域名目录 非/123 时跳转

替换掉宝塔原来的:

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

测试:

http://tst.picp.men             跳转

http://tst.picp.men/123     不跳转


已发布

分类

作者:

标签

评论

《“干货 | 宝塔(Nginx)开启强制SSL后如何实现二级目录不强制跳转”》 有 2 条评论

  1. GUANG 的头像
    GUANG

    大佬想问下第三条中的“if ($flag = “012”){”这条中指定了一个012目录,这条表达的是什么意思呢?

    1. 海拔科技 的头像
      海拔科技

      满足 上面 0 1 2 条件的情况下跳转至https

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注