ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Вопрос по логике
  • From: Sergey Shepelev <temotor@xxxxxxxxx>
  • Date: Tue, 22 Sep 2009 10:47:47 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=R/UTA0N/eFuEbQoBdfZwZXRDmN8DCwsnwvT+2ICdqqw=; b=jM6xLlhjhrVScaQqUvgGKe5qGFEivIOE6W+I4+dTLiBFpBL1h4r450WzW4VbxK79/X z7aJLMWDX/WElSPsnYxVTbhNRQmLAxKM5For4WeNKI96qpFC3TahOL4qEt2M04btvcRm OjInDCvcYypJxBFxVrvJKn4G0FeoI7t3psb/s=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=OViLutJYg+rA+fDgH+1dV4jpDmZpe0u0Tqb9pHT5V12+d9/wr1f74FQnLQRRHdojEO BOst6wvAt/VZBxnP9ysOZOnN9cO/5Ak6SmfY6R17ie2Ms5xFhTfc+198fUvg/LMUQRxB v3DanOm8yT8Exwsu2bIIkZl0XEmgoAmR+qHKk=
  • In-reply-to: <4AB86805.9040404@xxxxxxxxx>
  • References: <4AB86805.9040404@xxxxxxxxx>

2009/9/22 Александр <sytar.alex@xxxxxxxxx>:
> Добрый день
>
> Есть конструкция вида:
>
> 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 ...
}


 




Copyright © Lexa Software, 1996-2009.