Nginx重写:如果不是映像,则检查文件访问

Nginx重写:如果不是映像,则检查文件访问,nginx,url-rewriting,Nginx,Url Rewriting,我在将apache规则重写为nginx时遇到了一些问题。 在.httaccess中,它是: RewriteCond %{REQUEST_URI} ^/images/.* [NC] RewriteCond %{REQUEST_URI} !^/images/.*\.(png|jpg|gif|jpeg|bmp)$ [NC] RewriteRule ^(images/.*\.[a-zA-Z]{3,4})$ /getFile?file=$1 [NC] 我的nginx重写不起作用: location /i

我在将apache规则重写为nginx时遇到了一些问题。 在.httaccess中,它是:

RewriteCond %{REQUEST_URI} ^/images/.* [NC]
RewriteCond %{REQUEST_URI} !^/images/.*\.(png|jpg|gif|jpeg|bmp)$ [NC]
RewriteRule ^(images/.*\.[a-zA-Z]{3,4})$ /getFile?file=$1 [NC]
我的nginx重写不起作用:

location /images/(.*) {
    if ( $uri !~ ^/\.(png|jpg|gif|jpeg|bmp)$ ) {
        rewrite ^(images/(.*)\.([a-zA-Z]))$ /getFile?file=$1;
    }
}

您应该为nginx使用多个条件,如:

if ($uri ~* "^/images/.*"){
set $rule_0 1$rule_0;
}
if ($uri !~* "^/images/.*\.(png|jpg|gif|jpeg|bmp)$"){
    set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
    rewrite ^/(images/.*\.[a-zA-Z]{3,4})$ /getFile?file=$1;
}
它起作用了

location ~ ^/images/(.*) {
    if ($request_filename ~* ^.+.(png|jpg|gif|jpeg|bmp)$) {
        break;
    }
    rewrite ^/(images.*)$ /getFile?file=$1;
}
仅供参考: