重写特定的查询参数

有没有可能在nginx重写像mysite.com?t=TVALUE&foo=bar&bar=bazz mysite.com/TVALUE?foo=bar&bar=bazzmysite.com?t=TVALUE&foo=bar&bar=bazz mysite.com/TVALUE?foo=bar&bar=bazzmysite.com?t=TVALUE&foo=bar&bar=bazz mysite.com/TVALUE?foo=bar&bar=bazzurlmysite.com/TVALUE?foo=bar&bar=bazz
我所有的尝试都导致无限redirect或根本没有redirect。

通过在$args$request_uri变量上使用正则表达式,可以提取各个查询参数。

例如:

 location = / { if ($args ~ "^(.*&)?t=([^&]+)(?:&(.*))?$") { return 302 /$2?$1$3; } } 

在上面的例子中,正则表达式包含:

 ^ beginning of string (.*&)? optionally capture prefix up to an ampersand t=([^&]+) match and capture the required parameter (?:&(.*))? optionally capture suffix discarding ampersand $ end of string 

请注意使用if和正则表达式上的这个有用的资源 。