Работа с несколькими параметрами в Nginx rewrite - PullRequest
1 голос
/ 22 апреля 2010

У меня есть переписать, что nginx вызывает так:

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

И он используется на таких страницах, как это:

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

Работает все отлично и денди, но не масштабируется.Добавление еще одного элемента в URL означает, что я должен непосредственно редактировать конфигурацию nginx.В идеале я хотел бы переписать nginx в соответствии с тем, сколько параметров, разделенных запятыми, передается через URL, а не устанавливать фиксированное количество в конфигурации.Это возможно?

1 Ответ

1 голос
/ 25 апреля 2010

Насколько я понимаю, решения с использованием чистых регулярных выражений не существует.Но вы можете использовать возможности 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 по умолчанию, вы должны включить его во время сборки.Документация здесь .

...