nginx 根据查询参数使用不同的try_files

nginx 根据查询参数使用不同的try_files
location / {
    try_files "/wp-content/cache/all/${uri}index.html" $uri $uri/ /index.php?q=$uri&$args;
}

但如果使用可视化编辑器,我不想使用缓存。所以应该是

location / {
    if ($args ~ visual-editor){
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    try_files "/wp-content/cache/all/${uri}index.html" $uri $uri/ /index.php?q=$uri&$args;
}

但它不起作用,因为 nginx 对主要进行 apache 配置的人来说具有限制性并且很奇怪。

我尝试了命名位置,我尝试了一个子位置以使其乐意使用try_files,我不想重写,使用命名位置的错误代码黑客将导致查询参数被删除,这是不可能发生的。

这个想法很简单,如果我定义了一些排除项,则不要加载缓存的 html 文件。但似乎没有什么用,互联网给出的答案永远无法回答我的问题,所以我在这里提问。

答案1

您不能将其放入块try_filesif,但您可以在块中设置一个变量if并使用它来使语句的第一个术语无效try_files

例如:

server {
    ...
    set $cache /wp-content/cache/all;
    if ($args ~ visual-editor) { set $cache /nonexistent; }

    location / {
        try_files $cache${uri}index.html $uri $uri/ /index.php?q=$uri&$args;
    }
    ...
}

这种警告关于 的使用if

相关内容