ПРОЕКТЫ 


  АРХИВ 


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: непонятка с rewrite



On Sat, 9 Apr 2005, RaPaMaN wrote:

Igor Sysoev пишет:

On Sat, 9 Apr 2005, RaPaMaN wrote:


Не нужен break в

     rewrite  ^.+$  /index.php  break;

так как после break не определяется конфигурация для изменённого URI,
а остаётся та, к которой выполнялся rewrite, то есть,

 location ~* ^(?!.+\.(css|gif|jpg|txt|html|htm|png|jpeg|ico))$ {
      rewrite  ^.+$  /index.php  break;
 }

В этой конфигурации нет ничего про fastcgi, это статические файлы.

А после захода в такой location и rewrite будет дальше проверять совпадения по location ?

http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html

Если в выбранном location тоже есть директивы модуля
ngx_http_rewrite_module, то они также выполняются. Если URI изменился
в результате исполнения директив внутри location, то снова определяется
location для уже нового URI. Этот цикл может повторяться до 10 раз,
после чего nginx возвращает ошибку "Server Internal Error" (500).

Как я понимаю, в rewrite я не могу прописать pcre, чтобы rewrite срабатывал "для всего, кроме ...), т..е. ^(?:.+(?!\.css|.htm....))$


Можно.

Я пробовал прописать после
location = / {
}

rewrite ^(?:.+(?!\.htm|\.css|....))$ /index.php last;

дальше все остальные location ....

Поряд здесь не играет роли. Сначала отрабатываются все rewrite на уровне
сервера, потом определяется location. Потом отрабатываются все rewrite
в определившемся location. Если URI был изменён и не было break, то
опять определяется location. И так до 10 раз.

и nginx абсолютно всему делает rewrite, т.е. я понял, что rewrite сейчас не отрабатывает на совпадение и делать rewrite или пропустить, потому как туда все попадает.

Я не уверен, что "^(?:.+(?!\.htm|\.css|....))$" означает "всё, что
не оканчивается на .htm, .css, ...


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




 




Copyright © Lexa Software, 1996-2009.