码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx rewrite 多重判断

时间:2015-07-24 18:44:26      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:nginx   rewrite   多重判断   

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

需求:

        将http://192.168.1.221/192@9_1movsv 跳转到http://192.168.1.221/data/html/192/index.html, 其中192@9_1movsv 中的@是固定格式;

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


解决方法:

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

set $flag 0;    #设置一个变量,赋值为0
if (!-e $request_filename){
        set $flag "${flag}1";    #如果请求的文件名不存在,赋值为${flag}1
}
if ($request_filename ~* ^.*@.*$){
        set $flag "${flag}2";    #如果请求名匹配^.*@.*$,赋值为${flag}2
}
#当第一次判断成立的时候,$flag的值为01,当第二次判断也成立的时候,$flag的值为012
if ($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

本文出自 “分享是一种快乐” 博客,请务必保留此出处http://gladiator.blog.51cto.com/2313511/1678099

Nginx rewrite 多重判断

标签:nginx   rewrite   多重判断   

原文地址:http://gladiator.blog.51cto.com/2313511/1678099

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!