您的位置:首页 > 运维架构 > Nginx

nginx带问号(?)带参数的rewrite规则的书写方法

2014-01-23 16:50 627 查看
nginx带问号(?)带参数的rewrite规则的书写方法,很不错的文章,感兴趣的朋友可以参考下。今天收到一个需求,要根据程序员的需要给定php的参数来跳转到指定的页面,安装常规的rewrite规则,如:rewrite ^/change.php?id=weibo http://www.weibo.com/; (错误的示范)
这样的跳转起不了左右,因为nginx会把后面的一整串都认为是URL,但是在浏览器上去,只会访问到change.php这个文件。那只能想别的方法了,仔细看了nginx的各项参数,注意到里面的
$query_string 解释:请求行中(GET请求)的参数;(配置1)
$request_uri 解释:包含请求参数的原始URI,不包含主机名,如:"/change.php?id=163",不能修改。
(配置2)
那我们就根据参数来判断是否要跳转。配置如下
(配置1):



方便复制:复制代码代码如下:if ( $query_string ~ "id=(baidu)(.*)$" )
{
rewrite ^/css/style.css http://www.baidu.com/; }if ( $query_string ~ "id=(qq|QQ)(.*)$" )
{
rewrite ^/ http://www.qq.com/; }(配置2):



方便复制:复制代码代码如下:if ( $request_uri ~ "/(.*).html\?id=163" )
{
rewrite ^/ http://www.163.com/; }# 直接跳转到163 ;
if ( $request_uri ~ "/(.*).html\?id=sohu" )
{
rewrite ^/(.*).html /css/style.css;
}
# *.html?id=sohu 跳转到/css/style.css;伪静态测试:
1,测试跳转到百度:



2,测试跳转到QQ:



3,测试跳转到微博:



4,测试跳转到163:



从测试结果来看,配置成功。原文作者:李坤山
博客链接:http://blog.163.com/a12333a_li/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: