Reputation: 50
I have a rewrite that nginx calls like so:
location ~* (css)$ {
rewrite ^(.*),(.*)$ /min/index.php?f=$1,/min/$2 last;
}
And it's used on pages like this:
http://domain.com/min/framework.css,dropdown.css
Works all fine and dandy, but it's not scalable. Adding another element to the URL means I have to directly edit the nginx config. Ideally, I'd like to have nginx rewrite according to how many comma-delimited parameters are passed through the URL, rather than setting a fixed amount in the config. Is this possible?
Upvotes: 1
Views: 2448
Reputation: 13221
As far as I understand there is no solution using pure regular expressions. But you can make use of Perl capabilities, e.g.
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 module is not built into Nginx by default, you should turn it on at build time. The documentation is here.
Upvotes: 1