nginx 帶? rewrite 規則

 

因爲須要重定向 url ,nginx須要rewrite 。參考文獻 http://huangqiqing123.iteye.com/blog/2083434php

 

需求:將
http://10.106.1.30/uc/api/http.do?method=getLoginTicket&user_id=***&password=***
重寫成
http://10.106.1.30/uc/?m=member&c=http&a=getLoginTicket&user_id=***&password=***nginx

 

通常很天然想到的寫法以下:
rewrite "^/uc/api/http.do?method=getLoginTicket&user_id=(.*)&password=(.*)$"  /uc/?m=member&c=http&a=getLoginTicket&user_id=$1&password=$2 break;api

 

結果總提示404錯誤。url

 

後經查閱資料得知,rewrite只能針對請求的URL中問號?以前的部分進行重寫,問號後面的是請求參數,在nginx用$query_string表示,因此上面的重寫,根本就沒匹配成功。blog

 

正確的寫法以下:
在nginx.conf配置文件中,添加以下配置
  if ( $query_string ~ "method=getLoginTicket(.*)" ){
          rewrite "^/uc/api/http.do$"  /uc/?m=member&c=http&a=getLoginTicket&$query_string break;
    }get

 

下面是我本身的===========================================string

http://www.abc.com/showContent?lpId=1it

rewrite 成下面io

http://www.abc.com/api.php?uri=/jumpConfig/showContent&lpId=1ast

 

#$query_string 匹配? 後面的字段 並將()裏匹配的內容 賦予給$query_string.

location / { if ( $query_string ~ "lpId=(.*)"){ rewrite "^/showContent$" /api.php?uri=/jumpConfig/showContent&lpId=$query_string last; } try_files $uri $uri/ /index.php?$args; }

相關文章
相關標籤/搜索