我有一个nginx调用的重写:
location ~* (css)$ {
rewrite ^(.*),(.*)$ /min/index.php?f=$1,/min/$2 last;
}
它在这样的网页上使用:
http://domain.com/min/framework.css,dropdown.css
所有精致和花花公子,但它不可扩展。向URL添加另一个元素意味着我必须直接编辑nginx配置。理想情况下,我希望根据通过URL传递多少逗号分隔参数来重写nginx,而不是在配置中设置固定数量。这可能吗?
答案 0 :(得分: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。