2017-07-04 22 views
0

我有一些问题,重写规则apache到nginx。 在.httaccess是:Nginx的重写:检查文件访问如果不是图像

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; 
    } 
} 
+0

只为你我资讯:https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/ –

回答

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; 
} 
+0

JFYI https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/ –

0

它的工作

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