2014-07-02 34 views
0

我想做一些重定向但涉及$args

我想以下幾點:

rewrite /aaa?a=1&aa=2 /bbb?b=1&bb=2 permanent; 

但它不工作。線下工作正常,但

rewrite /aaa /bbb permanent; 

我添加這些行到我的配置文件:

 proxy_set_header x-request_uri "$request_uri"; 
     proxy_set_header x-args "$args"; 

而且我可以看到這些標題:

GET /aaa?a=1&aa=2 HTTP/1.0 
Host: www.example.com 
x-request_uri: /aaa?a=1&aa=2 
x-args: a=1&aa=2 
Connection: close 
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 
Accept: */* 

我做錯了嗎?有沒有一種方法可以完成重定向,需要考慮完整$ request_uri?

回答

0

我已經有了irc.freenode.net#nginx答案:

mod_rewrite的不匹配對網址與 - ARGS只是沒,如果使用或地圖來代替。

我設法得到它與if工作:

if ($request_uri = '/aaa?a=1&aa=2'){ 
    return 301 $scheme://$host/bbb?b=1&bb=2; 
} 

響應頭:

< HTTP/1.1 301 Moved Permanently 
< Server: nginx/1.0.15 
< Date: Wed, 02 Jul 2014 20:05:34 GMT 
< Content-Type: text/html 
< Content-Length: 185 
< Connection: keep-alive 
< Location: http://www.example.com/bbb?b=1&bb=2 
< x-uri: /aaa?a=1&aa=2