默认Nginx不支持多重判断,可通过设置变量的方式,变相的实现多重判断。

需求:

        将 跳转到 其中 中的@是固定格式;

同时要满足ThinkPHP的伪静态配置,将http://192.168.1.221/XXX 跳转到,这两次跳转前的请求路径都是不存在的。

解决方法:

        在虚拟主机的配置文件中添加:

set $flag 0;    #设置一个变量,赋值为0if (!-e $request_filename){        set $flag "${flag}1";    #如果请求的文件名不存在,赋值为${flag}1}if ($request_filename ~* ^.*@.*$){        set $flag "${flag}2";    #如果请求名匹配^.*@.*$,赋值为${flag}2}#当第一次判断成立的时候,$flag的值为01,当第二次判断也成立的时候,$flag的值为012if ($flag = "01"){        rewrite ^/(.*)$ /index.php/$1 last;        break;}if ($flag = "012"){        rewrite ^/(.*)@.*$ /data/html/$1/index.html permanent;}

参考地址:http://www.111cn.net/sys/nginx/46311.htm