nginx 中的多个重写规则

nginx 中的多个重写规则

因此我尝试在 nginx 中使用多条重写规则,但是没有效果。

    location / {
    if (!-e $request_filename){
        rewrite ^(.*)$ /$1.png break;
        rewrite ^(.*)$ /$1.jpg break;
        rewrite ^(.*)$ /$1.gif break;
        rewrite ^(.*)$ /$1.txt break;
        rewrite ^(.*)$ /$1.rar break;
        rewrite ^(.*)$ /$1.zip break;
        rewrite ^(.*)$ /$1.mp3 break;
        rewrite ^(.*)$ /$1.mp4 break;
    }
    try_files $uri $uri/ /index.php?$query_string;
}

这是我的配置,但第一条规则(png 规则)是唯一有效的规则,其余规则都返回 404。

谢谢!

答案1

rewrite指令不检查重写的 URI 是否存在,因此

rewrite ^(.*)$ /$1.png break;

只是添加.png到每个无法解析文件的 URL 并停止重写(break)。

您正在寻找的是try_files已经拥有的指令。 您可能想要类似以下内容的内容:

try_files $uri $uri/ $uri.png $uri.jpg $uri.gif ...

我不确定您想用来实现什么目的/index.php?query_string

相关内容