重写特定的查询参数

时间:2017-07-16 13:52:17

标签: nginx url-rewriting

是否可以在nginx中将mysite.com?t=TVALUE&foo=bar&bar=bazz之类的网址重写为mysite.com/TVALUE?foo=bar&bar=bazz
我的所有尝试都导致无限重定向或根本没有重定向..

1 个答案:

答案 0 :(得分:1)

使用$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

关于正则表达式ifthis caution的使用,请参阅this useful resource