Stripping out query parameter?

Neil Sheth nsheth at gmail.com
Wed Mar 4 01:53:24 MSK 2009


Ok, that seemed to mostly do what I wanted, thanks!

A couple things -

 I want to avoid writing the trailing '?' if there is no leftover
parameters to pass through:
www.mysite.com/test.php?extra=yes goes to www.mysite.com/test.php?
instead of www.mysite.com/test.php

Similarly, with multiple parameters, it seems to leave the final '&' on the end.

Do I need to create special rules for each of these?  Or, can I add
logic to test the content of $stripped_params and set the rewrite
accordingly?

Also, I'm not clear, where is it most appropriate to place this rule -
under server, or under location / ?


2009/3/3 Maxim Dounin <mdounin at mdounin.ru>:
> Hello!
>
> On Tue, Mar 03, 2009 at 03:08:06AM -0800, Neil Sheth wrote:
>
>> Hmmm, I'm getting:
>>
>> # nginx -t -c /etc/nginx/nginx.conf
>> 2009/03/03 05:05:07 [emerg] 10550#0: invalid number of arguments in
>> "set" directive in /etc/nginx/nginx.conf:170
>> 2009/03/03 05:05:07 [emerg] 10550#0: the configuration file
>> /etc/nginx/nginx.conf test failed
>>
>> Not sure what the error is here.  Also, not sure if this rule belongs
>> at the server level, or within my "location / " section . . .
>
> [...]
>
>> >>          if ($args ~* ^(.*)(&?)extra=yes$) {
>> >>              set $stripped_params = $1;
>
> -                 set $stripped_params = $1;
> +                 set $stripped_params $1;
>
> Maxim Dounin
>
>
>> >>              rewrite ^(.*)$ $1$stripped_params permanent;
>> >
>> > -              rewrite ^(.*)$ $1$stripped_params permanent;
>> > +              rewrite ^(.*)$ $1?$stripped_params? permanent;
>> >
>> >>          }
>> >>
>> >> Any thoughts?  I'm running 0.6.31.  Thanks!
>> >
>> > 1. Missing '?' to separate uri path and arguments.  Note that $args
>> > doesn't contain leading '?'.
>> >
>> > 2. Without trailing '?' nginx will append original arguments to
>> > resulting rewrite uri.
>> >
>> > Maxim Dounin
>> >
>> >
>>
>
>





More information about the nginx mailing list