html - это дефолтный root, если root не описан, то равен <prefix>/html
Нужно для этого location описать root:
location ~* \.html$ {
root /path/to/root;
rewrite .* /index.php?r=$request_uri break;
}
И ещё я убрал точку перед ./index.php.
Отлаживать rewrite можно по логу, уровень notice и директива
rewrite_log [on|off];
Ну, что могу сказать, определённые сдвиги есть. Вышеуказанная
конструкция возвращает мне только index.php без никаких параметров,
при это возвращает так, что броузер начинает её скачивать а внутри
оказывается исходник на PHP. То есть как я понимаю, не передаётся на
CGI. Вот мой колнфиг.
location ~* \.(html)$ {
rewrite_log on;
root /data/www/htdocs/www.*******.com;
rewrite .* /index.php?r=$request_uri break;
}
location ~* ^.+\.(php) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_root /data/www/htdocs/www.*******.com/;
fastcgi_index index.php;
fastcgi_temp_path /tmp ;
fastcgi_buffers 4 32k;
fastcgi_busy_buffers_size 32k;
fastcgi_temp_file_write_size 32k;
}
Потому что в рамках "location ~* \.(html)$" запрос обрабатывается
как статический файл. Нужно или добавить fastcgi_... директивы
в "location ~* \.(html)$", или убрать break из rewrite'а. Во втором
случае после rewrite'а будет снова определяться location и запрос
попадёт в "location ~* ^.+\.(php)".
Кстати, скобки вокруг (html) и (php) не нужны.
И ещё, начиная с 0.1.29 fastcgi_root нет, и нужно указывать все нужные
FastCGI параметры.
Игорь Сысоев
http://sysoev.ru