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