我有两种来源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;
} }
答案 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.
}