Nginx if 语句不支持嵌套以及逻辑运算(与、或操作)的解决方法
admin 阅读:83 2024-02-29
Nginx 配置中,不支持 if 语句的嵌套,也不支持逻辑与、或运算。比如我们有一个需求,需要配置重定向,访问网站任何页面都跳转到指定页面。
以下两种常规写法都会报错:
if ($uri != "/archives/1665" && !-f $request_filename){
rewrite ^/(.*)$ https://www.codesou.cn/archives/1665 redirect;
}
if ($uri != "/archives/1665"){
if(!-f $request_filename){
rewrite ^/(.*)$ https://www.codesou.cn/archives/1665 redirect;
}
}
那么要怎么解决这个问题呢?其实我们可以使用变量的方式来变通/间接解决:
set $flag "";
if ($uri != "/archives/1665"){
set $flag "${flag}1";
}
if (!-f $request_filename) {
set $flag "${flag}1";
}
if ($flag = "11") {
rewrite ^/(.*)$ https://www.codesou.cn/archives/1665 redirect;
}
怎么样,是不是换个思路也很简单。
声明
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!