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

发布时间:2019-11-21编辑:脚本学堂
nginx带问号(?)带参数的rewrite规则的书写方法,很不错的文章,感兴趣的朋友可以参考下。

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):
nginx_rewrite_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):
nginx_rewrite_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,测试跳转到百度
nginx_rewrite_3 
2,测试跳转到QQ:
nginx_rewrite_4 
3,测试跳转到微博:
nginx_rewrite_5
4,测试跳转到163:
nginx_rewrite_6

从测试结果来看,配置成功。

原文作者:李坤山
博客链接:http://blog.163.com/a12333a_li/