Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: революционные нано технологии!
On Thu, Dec 11, 2008 at 10:19:58PM +0600, Pavel V. wrote:
> Мне кажется название директивы не слишком интуитивно понятным.
>
> Поскольку "критикуя-предлагай" хочу предложить переименовать её в
> что-то подобное "try_files", поскольку по смыслу оно пытается найти
> и отдать файлы, а не занимается проверкой совпадений.
На данный момент у есть три варианта - try_file, test_file, use_file.
> > Поскольку я уже не могу смотреть без боли на кучи реврайтов,
> > то сегодня я изобрел революционную директиву file_match.
>
> > Вместо
>
> > location / {
>
> > if (-f $request_filename) {
> > break;
> > }
>
> > if (-f $request_filename/index.html) {
> > rewrite (.*) $1/index.html break;
> > }
>
> > if (-f $request_filename.html) {
> > rewrite (.*) $1.html break;
> > }
>
> > if (!-f $request_filename) {
> > proxy_pass http://mongrel;
> > break;
> > }
> > }
>
> > предлагается писать
>
> > location / {
> > file_match $uri $uri/index.html $uri.html
> > @mongrel;
> > }
>
> > location @mongrel {
> > proxy_pass http://mongrel;
> > }
>
> > Для любителей Drupal/Joomla:
>
> > location / {
> > file_match $uri @drupal;
> > # то же самое, что
> > # error_page 404 = @drupal; log_not_found off;
> > }
>
> > location ~ \.php$ {
> > file_match $uri @drupal;
>
> > fastcgi_pass ...
> > fastcgi_param SCRIPT_FILENAME /path/to$script_filename;
> > }
>
> > location @drupal {
> > fastcgi_pass ...
> > fastcgi_param SCRIPT_FILENAME /path/to/index.php;
> > }
>
> > file_match перебирает параметры и пытается найти соответствие на файловой
> > системе. Если файл найден, то URI меняется на этот параметр и обработка
> > делается в том же location'е. Последний параметр - fallback.
>
>
> --
> С уважением,
> Pavel V. Rochnyack mailto:pavel2000@xxxxxx
>
--
Игорь Сысоев
http://sysoev.ru
|