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