Nginx重定向URL,URL上带有特定查询参数

时间:2019-02-08 10:06:23

标签: nginx

Nginx,我正在尝试重定向一个与查询参数匹配的网址,但是它不起作用。

http://www.example.org/xyz?abc=123&color="<K>" to the below URL http://www.example.org/anything/something).

我在下面尝试过,但是没有用。

location = /xyz {
    if ($args ~* "^&color="<K>") {
        rewrite ^.*$ /anything/something redirect;
    }
}

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

诸如"<>之类的字符在原始请求中为URL encoded,并保留在$args变量中。

此外,您的正则表达式中的^&会将&锚定到查询字符串的开头,而实际上它前面还有另一个参数。

以下示例似乎可以正常工作:

location = /xyz {
    if ($args ~* "&color=%22%3CK%3E%22") {
        ...
    }
}

或者,您可以直接使用以下方法测试color参数的值:

location = /xyz {
    if ($arg_color = '%22%3CK%3E%22') {
        ...
    }
}