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;
}
怎么样,是不是换个思路也很简单。
想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Nginx if 语句不支持嵌套以及逻辑运算(与、或操作)的解决方法
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Nginx if 语句不支持嵌套以及逻辑运算(与、或操作)的解决方法