Nginx重写:如果不是图像

时间:2017-07-04 09:14:59

标签: 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 /images/(.*) {
    if ( $uri !~ ^/\.(png|jpg|gif|jpeg|bmp)$ ) {
        rewrite ^(images/(.*)\.([a-zA-Z]))$ /getFile?file=$1;
    }
}

2 个答案:

答案 0 :(得分:0)

你应该为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;
}

答案 1 :(得分:0)

它的工作

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