Вопрос по логике

Александр sytar.alex at gmail.com
Tue Sep 22 11:36:37 MSD 2009



Sergey Shepelev пишет:
> 2009/9/22 Александр <sytar.alex at gmail.com>:
>   
>> Добрый день
>>
>> Есть конструкция вида:
>>
>> if ($request_filename !~
>> (js|css|ico|gif|jpg|png|xml|pdf|gz|images|.html|robots.txt|index.php*) ) {
>>        rewrite ^/(.*)$ /index.php/$1 last;
>> }
>>
>>     
>
> .html
> это регексп, который матчит .html, jhtml, shtml, Khtml, 0html.
>
> index.php*
> это регексп, который матчит index.php, index.ph, index.phpppppp,
> indexRph, index9phpp.
>
> Точка матчит любой символ, а звезда матчит предыдущую маску (а
> поскольку скобок не было, то один символ) 0 или больше раз (сколько
> угодно).
>
>   
>> которая должна все файлы кроме статики и index.php отправлять на
>> index.php. Но в данный момент она, скажем, не очень гибкая. Как её можно
>> переписать получше?
>>
>>
>>     
>
> location = / { rewrite ^ /index.php/ last; }
> location / { rewrite ^/(.*) /index.php/$1 last; }
> location ~ (js|css|ico|gif|jpg|png|xml|pdf|gz|images|\.html|robots\.txt)$ {
>   root /path;
>   expires 6h;
>   access_log off;
> }
> location /index.php {
>   proxy(fastcgi)_pass ...
> }
>
> Это нужно, только если вашему PHP скрипту нужно получать запросы на
> несуществующие файлы, например, статика *.mjpg в списке расширений
> отсутствует. Она попадёт на index.php. Оно надо? Иногда бывает, но
> скорее всего - нет.
> Поэтому, самый лучший и гибкий вариант просто отдавать все существующие файлы:
>
> location = / { rewrite ^ /index.php/ last; }
> location / {
>   try_files $uri /index.php/$uri;   # <- здесь может быть ошибка
>   root /path;
>   expires 6h;
>   access_log off;
> }
> location /index.php {
>   proxy(fastcgi)_pass ...
> }
>   

Спасибо ваша конструкция работает как надо.





More information about the nginx-ru mailing list