Nginx 配置 if 和 try_files

Nginx 配置 if 和 try_files

我想检查配置中的查询字符串。如果匹配,则加载某个页面。如果不匹配,则重定向。因此我这样编写配置:

...
location / {
    if ($args ~ "api_url") {    
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        index  index.html;
        try_files $uri /page_cache/$uri /page_cache/$uri/ /page_cache/$uri.html @puma;
        break;
    }
    rewrite ^ http://domain.com permanent;
}
...

但它不起作用,因为我无法在 if 中使用所有这些指令。

我尝试break在 if 中只使用一个,但是也不起作用。

我怎样才能做到这一点?

谢谢。

答案1

您只需要反转 if 中的逻辑:(我还将删除代理指令,因为它们在这里没有效果)

location / {
  if ($arg_api_url != '') {
    return 301 http://domain.com/;
  }

  try_files $uri /page_cache/$uri /page_cache/$uri/ /page_cache/$uri.html @puma;
}

相关内容