Re: революционные нанотехнологии!

Pavel V. pavel2000 at ngs.ru
Thu Dec 11 19:19:58 MSK 2008


Здравствуйте!


  Мне кажется название директивы не слишком интуитивно понятным.

  Поскольку "критикуя-предлагай" хочу предложить переименовать её в
  что-то подобное "try_files", поскольку по смыслу оно пытается найти
  и отдать файлы, а не занимается проверкой совпадений.

> Поскольку я уже не могу смотреть без боли на кучи реврайтов,
> то сегодня я изобрел революционную директиву 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 at ngs.ru






More information about the nginx-ru mailing list