2010-04-22 72 views
1

我有一个nginx的像这样调用来重写:多参数处理在Nginx的重写

 location ~* (css)$ { 
rewrite ^(.*),(.*)$ /min/index.php?f=$1,/min/$2 last; 
     } 

而且它在页面中使用这样的:

http://domain.com/min/framework.css,dropdown.css 

工作都好得很,但它不可扩展。向URL添加另一个元素意味着我必须直接编辑nginx配置。理想情况下,我希望根据通过URL传递多少个逗号分隔参数来重写nginx,而不是在配置中设置固定数量。这可能吗?

回答

1

据我所知,没有使用纯正则表达式的解决方案。但您可以使用Perl功能,例如

http { 
    perl_set $css_uri_arg 'sub { 
    my $r = shift; 
    my ($first,@rest) = split(/,/, $r->uri); 
    join(',', ($first, map { "/min/$_"; } @rest)); 
    }'; 

    server { 
    location ~* (css)$ { 
     rewrite^/min/index.php?f=$css_uri_arg last; 
    } 
    } 
} 

Perl模块默认没有内置到Nginx中,您应该在构建时将其打开。该文档是here