Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: революционные нанотехнологии!
Здравствуйте!
Мне кажется название директивы не слишком интуитивно понятным.
Поскольку "критикуя-предлагай" хочу предложить переименовать её в
что-то подобное "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@xxxxxx
|