<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>Harish Sundararaj wrote:</div><blockquote type="cite">I have a list which is something like this:<br>keyA : a1,a2<br>keyB : b1,b2<br>
keyC : c1, c2<br>the access URL will be <a href="http://example.com/results/myquery/keyB-keyD-keyK" target="_blank">http://example.com/results/myquery/keyB-keyD-keyK</a> <br>
This should translate to /results?q=myquery&keyvals=b1,b2,d1,d2,k1,k2<br></blockquote><div><br></div><div>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.</div><div><br></div><div>You are probably better off using something like the Perl module anyways.</div><div><br></div><div><div># map of key/value pairs</div><div>map $key $val {</div><div> keyA a1,a2;</div><div> keyB b1,b2;</div><div> keyC c1,c2;</div><div>}</div><div><br></div><div><div># redirect for one key</div><div>location ~ ^/results/([^/]+)/([^-]+)$ {</div><div> set $query $1;</div><div> set $key $2;</div><div> if ($arg_keyvals) { set $sep ","; }</div><div> rewrite ^ /results?q=$query&keyvals=$arg_keyvals$sep$val? permanent;</div><div>}</div><div><br></div><div># intermediate redirect for more than one key</div><div>location ~ ^/results/([^/]+)/([^-]+)-(.+)$ {</div><div> set $query $1;</div><div> set $keys $3;</div><div> set $key $2;</div><div> if ($arg_keyvals) { set $sep ","; }</div><div> rewrite ^ /results/$query/$keys?keyvals=$arg_keyvals$sep$val? permanent;</div><div>}</div><div><br></div><div><br></div></div></div><div><div><div>Tobia</div></div></div></div></body></html>