我想做一些重定向但涉及$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 :(得分:0)
我在irc.freenode.net
#nginx
上得到了答案:
mod_rewrite只与url-with-args不匹配,不使用if或map。
我设法使用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