我在将规则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;
}
}
答案 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;
}