Nginx:基于多个参数重定向位置

Nginx:基于多个参数重定向位置,nginx,nginx-location,Nginx,Nginx Location,我设置了一个nginx位置重定向,将/my_route重定向到即将到来的页面,但允许/my_route?db=preview传递到代理服务器 location /my_route { if ($arg_db != "preview") { rewrite ^ /coming-soon/ last; } <other location config for when db == preview> } 位置/我的路线{ 如果($arg_db!=“预览”){ 重写^/

我设置了一个nginx位置重定向,将
/my_route
重定向到即将到来的页面,但允许
/my_route?db=preview
传递到代理服务器

location /my_route {
  if ($arg_db != "preview") {
    rewrite ^ /coming-soon/ last;
  }
  <other location config for when db == preview>
}
位置/我的路线{
如果($arg_db!=“预览”){
重写^/即将/最后;
}
}
我想增加一层复杂性,为即将到来的页面支持多种语言

打破nginx的配置,但给你一个想法:

location /my_route {
  if ($arg_db != "preview") {
    if ($arg_lang == "es") {
      rewrite ^ /coming-soon/index_es.html last;
    }
    rewrite ^ /coming-soon/ last;
  }
  <other location config for when db == preview>
}
位置/我的路线{
如果($arg_db!=“预览”){
如果($arg_lang==“es”){
重写^/coming soon/index_es.html last;
}
重写^/即将/最后;
}
}

我知道这一点,所以我很高兴不再使用
if
,如果这是需要的,但我不知道应该朝哪个方向看。我只知道nginx不支持
&&
语句,也不支持嵌套的
if
语句。

您可以使用
映射来消除内部
if

例如:

map $arg_lang $mylang {
    default   /;
    es        /index_es.html;
}
server {
    ...
    rewrite ^ /coming_soon$mylang last;
    ...
}
有关详细信息,请参阅