Harish Sundararaj wrote:
> I have a list which is something like this:
> keyA : a1,a2
> keyB : b1,b2
> keyC : c1, c2
> the access URL will be http://example.com/results/myquery/keyB-keyD-keyK
> This should translate to /results?q=myquery&keyvals=b1,b2,d1,d2,k1,k2
Here is one way to do it inside nginx. It's sub-optimal, as it sends several redirects back to the user (one for each key) but it's a start.
You are probably better off using something like the Perl module anyways.
# map of key/value pairs
map $key $val {
keyA a1,a2;
keyB b1,b2;
keyC c1,c2;
}
# redirect for one key
location ~ ^/results/([^/]+)/([^-]+)$ {
set $query $1;
set $key $2;
if ($arg_keyvals) { set $sep ","; }
rewrite ^ /results?q=$query&keyvals=$arg_keyvals$sep$val? permanent;
}
# intermediate redirect for more than one key
location ~ ^/results/([^/]+)/([^-]+)-(.+)$ {
set $query $1;
set $keys $3;
set $key $2;
if ($arg_keyvals) { set $sep ","; }
rewrite ^ /results/$query/$keys?keyvals=$arg_keyvals$sep$val? permanent;
}
Tobia_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx