как заставить работать такую конструкцию ?

Igor Sysoev is at rambler-co.ru
Wed Jan 26 19:57:38 MSK 2005


On Wed, 26 Jan 2005, Igor Sysoev wrote:

> On Wed, 26 Jan 2005, Alexey Bestciokov wrote:
>
>> есть такой конфиг:
>> 
>> location /pop/download.php
>> {
>>         fastcgi_pass ...
>>         fastcgi_root ...
>>         fastcgi_index ...
>> }
>> 
>> location ~* ^.+\.(php)$
>> {
>>         fastcgi_pass ...
>>         fastcgi_root ...
>>         fastcgi_index ...
>> }
>> 
>> суть такова что все .php кроме одного файла (/pop/download.php) должны
>> обрабытывать как обычно, а /pop/download.php - отдельно. Но что то не
>> работает, всё обрабатывается вторым правилом :) Подскажите пожалуйста
>> - что и где я напутал ?
>
> Так и должно работать. Регеэксы обрабатываются после обычных location's.
> Но есть два способа запретить регэксы:
>
> 1)  location = /pop/download.php {
>
> location работает только при точном соотвтесвии URL'а, поэтому проверять
> регэксы бессмысленно.
>
> 2)  location ^~ /pop/some_uri {
>
> "^~" запрещает проверку регксов, если URL подходит под location.

Третий способ - так как в отличие от обычных location, регэкспы обарбатываются
в порядке их написания, то в данном случае можно написать так:

  location ~ ^/pop/download.php$ {

  location ~* ^.+\.(php)$ {

Но, естественно, простое равенство "=" самое лучшее решение.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list