使用 nginx 的 try_files 和 HTTP 方法上的行为

使用 nginx 的 try_files 和 HTTP 方法上的行为

我已经清理了我的 nginx 配置,将所有ifs 替换为try_files,但最后一个让我很烦。我希望它仅在 HTTP 方法是不是 DELETE.Delete用于删除缓存文件。

谢谢你的灯!

location / {
    if ($request_method ~ ^DELETE$) {
        rewrite ^/(.+)$ /index.php?url=$1 last;
    }
    if (-e $request_filename) {
         break;
    }
    if (!-e $request_filename) {
         rewrite ^/(.+)$ /index.php?url=$1 last;
    }
}

顺便提一句 :我越想越觉得,这似乎很不安全……

答案1

我发现的解决方案是保留第一个if,但将另外两个替换为更好的try_files

location / {
    if ($request_method ~ ^DELETE$) {
        rewrite ^ /index.php last;
    }

    try_files $uri $uri/ /index.php?$args;
}

相关内容