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 ...
}
|