Hello,
I’m trying to rewrite some urls that are incorrect. An example would
be:
www.mysite.com/test.php?x=123&extra=yes
I want to rewrite this to
www.mysite.com/test.php?x=123
I’m trying something like the following, without luck:
if ($args ~* ^(.*)(&?)extra=yes$) {
set $stripped_params = $1;
rewrite ^(.*)$ $1$stripped_params permanent;
}
Any thoughts? I’m running 0.6.31. Thanks!
On Tue, Mar 03, 2009 at 12:08:11AM -0800, Neil S. wrote:
I’m trying something like the following, without luck:
if ($args ~* ^(.*)(&?)extra=yes$) {
set $stripped_params = $1;
rewrite ^(.*)$ $1$stripped_params permanent;
to omit original arguments.
Hello!
On Tue, Mar 03, 2009 at 12:08:11AM -0800, Neil S. wrote:
I’m trying something like the following, without luck:
if ($args ~* ^(.*)(&?)extra=yes$) {
set $stripped_params = $1;
rewrite ^(.*)$ $1$stripped_params permanent;
}
Any thoughts? I’m running 0.6.31. Thanks!
-
Missing ‘?’ to separate uri path and arguments. Note that $args
doesn’t contain leading ‘?’.
-
Without trailing ‘?’ nginx will append original arguments to
resulting rewrite uri.
Maxim D.
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 . . .
Hello!
On Tue, Mar 03, 2009 at 03:08:06AM -0800, Neil S. 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;
Maxim D.
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 D. [email protected]: