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/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章