首页 > 解决方案 > Nginx 重写发送除一个之外的所有查询参数

问题描述

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

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

我想把用户带到这个 URL: domain2.com/check?uuid=1821

可以有更多的查询参数,我想保留它们,除了migrate

标签: nginxurl-rewriting

解决方案


您将需要将正则表达式应用于包含整个查询字符串的变量 - 所以要么是可能的候选者,$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


推荐阅读