Nginx重写发送除一个以外的所有查询参数

时间:2018-04-28 13:23:15

标签: nginx url-rewriting

在将用户从domain1.com重定向到domain2.com之前,我需要从请求URI中删除某个查询参数。查询参数为migrate

所以从这个URL: domain1.com/check?migrate=true&uuid=1821

我想将用户带到此网址: domain2.com/check?uuid=1821

可以有更多查询参数,除了migrate

我希望保留所有查询参数

1 个答案:

答案 0 :(得分:1)

您需要将正则表达式应用于包含整个查询字符串的变量 - 因此$request_uri$args可能是候选者。

要仅重定向/check,您可以使用:

location = /check {
    if ($args ~* ^(.*&)?migrate=[^&]*(&(.*))?$)
        return 301 http://domain2.com$uri?$1$3;
    }
    return 301 http://domain2.com$uri?$args;
}

有关使用if的信息,请参阅this caution