从url读取查询参数以执行nginx重定向

时间:2019-02-11 02:28:31

标签: nginx

我有两种来源URL格式,并且希望根据 颜色变体到目标链接并附加了参数。

场景1 www.example.com/pages?abc=123&color=white ,该网址应重定向到www.example.com/variant1?abc=123&color=white < / p>

场景2 www.example.com/pages?abc=456&color=red ,该网址应重定向到www.example.com/variant2?abc=456&color=red < / p>

我在下面尝试过,它只适用于一个,但不适用于两者。找不到这两种情况的解决方案,否则无法正常工作

location = /pages {
    if ($args ~* "&color=white”) {
    rewrite ^.*$ /variant1 redirect;
    } }

1 个答案:

答案 0 :(得分:1)

虽然可以在Nginx中执行此操作,但它将defeat some of the advantages that Nginx provides。如果可以的话,最好在您的应用程序代码或Lua中进行。

如果选择继续使用if语句,则需要与单个$arg_*变量而不是$args进行匹配。特别是,您将要使用$arg_color,它将包含color查询字符串值。

location = /pages {
    if ($arg_color = "white") { return 301 /variant1$is_args$args; }
    if ($arg_color = "red")   { return 301 /variant2$is_args$args; }

    # If we get to this point, there was no match.  You have to keep
    # this very simple and can only use directives documented as being
    # compatible with `if`, or you'll get all sorts of crazy bugs and
    # crashes.
    return 404.
}