Small bug in rewrite rules using if (ugh, yes, if is bad ...)

Peter Portante peter.a.portante at gmail.com
Wed Aug 31 15:26:29 UTC 2011


Hello folks,

Just thought I would report a small bug with rewrite interacting with if.

Here is my simple setup:

server  {
    server_name     example.dev.com;
    location    ^~  /salad/add {
        if ($arg_paramThree = "foobar") {
            rewrite     ^
https://example.this.com?PARAM_ONE=$arg_paramOne&PARAM_TWO=$arg_paramTwo?
redirect;
        }
        proxy_pass      http://127.0.0.1:8080$request_uri;
    }
}

So when I hit the server with this URL:

http://example.dev.com/salad/add?paramThree=foobar&paramTwo=two&paramOne=one


It is rewritten to be:

https://example.this.com?PARAM_ONE=one&PARAM_TWO=two?paramThree=foobar


If I use the following if conditional, the behavior is as expected:

if ($args ~ "paramThree=foobar") {


I tried to use OpenID for Nginx Trac, but am a little leary to do so because
the server cert is not valid. So I am posting it here.

Thanks,
-peter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20110831/9aa063f6/attachment-0001.html>


More information about the nginx mailing list