REwrite i QueryString
Igor Sysoev
is at rambler-co.ru
Tue May 17 17:17:26 MSD 2005
On Tue, 17 May 2005, Aleksej Novikov wrote:
> Tuesday, May 17, 2005, 3:47:42 PM, you wrote:
>> 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
More information about the nginx-ru
mailing list