nginx

在Nginx的Rewrite中需要用到$host 和 $request_uri 来做匹配判断。并根据匹配的条件来做重写处理:所以Rewrite规则可以写成:

if ($host ~ www.qibar.com && $request_uri !~ ^/(api|public-api)) {
rewrite ^(.*)$ https://www.qibar.com$1 permanent;
}

然而Nginx不支持多重添加判断、&& || 。
当需要用到多条件判断的时候,可以添加一个变量来做判断:

#Nginx Rewrite Double Condition Set.
set $my_rewt "n";
if ($host ~ www.qibar.com ) {
set $my_rewt "y";
}
if ($uri ~ ^/(api|public)) {
set $my_rewt "n";
}
if ($my_rewt = "y") {
rewrite ^(.*)$ https://www.qibar.com$1 permanent;
}

虽然增加变量来做判断,增加了配置的长度和复杂性、但却可以符合实际的情况。。那就这样将就着用吧。

你可能感兴趣的:(nginx,多条件判断)