use_file мне кажется наиболее удачным вариантом.<br><br><div class="gmail_quote">11 декабря 2008 г. 19:33 пользователь Igor Sysoev <span dir="ltr"><<a href="mailto:is@rambler-co.ru">is@rambler-co.ru</a>></span> написал:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">On Thu, Dec 11, 2008 at 10:19:58PM +0600, Pavel V. wrote:<br>
<br>
> Мне кажется название директивы не слишком интуитивно понятным.<br>
><br>
> Поскольку "критикуя-предлагай" хочу предложить переименовать её в<br>
> что-то подобное "try_files", поскольку по смыслу оно пытается найти<br>
> и отдать файлы, а не занимается проверкой совпадений.<br>
<br>
</div>На данный момент у есть три варианта - try_file, test_file, use_file.<br>
<div><div></div><div class="Wj3C7c"><br>
> > Поскольку я уже не могу смотреть без боли на кучи реврайтов,<br>
> > то сегодня я изобрел революционную директиву file_match.<br>
><br>
> > Вместо<br>
><br>
> > location / {<br>
><br>
> > if (-f $request_filename) {<br>
> > break;<br>
> > }<br>
><br>
> > if (-f $request_filename/index.html) {<br>
> > rewrite (.*) $1/index.html break;<br>
> > }<br>
><br>
> > if (-f $request_filename.html) {<br>
> > rewrite (.*) $1.html break;<br>
> > }<br>
><br>
> > if (!-f $request_filename) {<br>
> > proxy_pass <a href="http://mongrel" target="_blank">http://mongrel</a>;<br>
> > break;<br>
> > }<br>
> > }<br>
><br>
> > предлагается писать<br>
><br>
> > location / {<br>
> > file_match $uri $uri/index.html $uri.html<br>
> > @mongrel;<br>
> > }<br>
><br>
> > location @mongrel {<br>
> > proxy_pass <a href="http://mongrel" target="_blank">http://mongrel</a>;<br>
> > }<br>
><br>
> > Для любителей Drupal/Joomla:<br>
><br>
> > location / {<br>
> > file_match $uri @drupal;<br>
> > # то же самое, что<br>
> > # error_page 404 = @drupal; log_not_found off;<br>
> > }<br>
><br>
> > location ~ \.php$ {<br>
> > file_match $uri @drupal;<br>
><br>
> > fastcgi_pass ...<br>
> > fastcgi_param SCRIPT_FILENAME /path/to$script_filename;<br>
> > }<br>
><br>
> > location @drupal {<br>
> > fastcgi_pass ...<br>
> > fastcgi_param SCRIPT_FILENAME /path/to/index.php;<br>
> > }<br>
><br>
> > file_match перебирает параметры и пытается найти соответствие на файловой<br>
> > системе. Если файл найден, то URI меняется на этот параметр и обработка<br>
> > делается в том же location'е. Последний параметр - fallback.<br>
><br>
><br>
> --<br>
> С уважением,<br>
> Pavel V. Rochnyack mailto:<a href="mailto:pavel2000@ngs.ru">pavel2000@ngs.ru</a><br>
><br>
<br>
</div></div><div><div></div><div class="Wj3C7c">--<br>
Игорь Сысоев<br>
<a href="http://sysoev.ru" target="_blank">http://sysoev.ru</a><br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>С уважением, Борис Долгов.<br>icq 77556665<br>e-mail <a href="mailto:boris@dolgov.name">boris@dolgov.name</a><br>