2014-07-02 33 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