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

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

Hello!

On Wed, Aug 31, 2011 at 11:26:29AM -0400, Peter Portante wrote:

        rewrite     ^

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”) {

Works ok here. Which nginx version do you use?

Maxim D.

On Wed, Aug 31, 2011 at 11:52 AM, Maxim D. [email protected]
wrote:

server {
}

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

if ($args ~ “paramThree=foobar”) {

Works ok here. Which nginx version do you use?

1.0.4

thanks for taking the time to check it out.

Hello!

On Tue, Sep 27, 2011 at 09:30:40PM -0400, Peter Portante wrote:

Here is my simple setup:
proxy_pass http://127.0.0.1:8080$request_uri;

1.0.4

thanks for taking the time to check it out.

Could you please provide debug log? Please see
Debugging | NGINX for details.

Maxim D.