On Wed, Aug 15, 2007 at 10:37:29AM +0300, Andrey Kravchenko wrote:
> Вы писали Wednesday, August 15, 2007, 8:43:32 AM:
>
> > On Tue, Aug 14, 2007 at 07:00:07PM +0300, Andrey Kravchenko wrote:
>
> >> В конфиге есть строчка:
> >> fastcgi_param REQUEST_URI $uri;
> >>
> >> Есть скрипт на PHP:
> >> echo($_SERVER['REQUEST_URI']);
> >>
> >> Если обращаюсь к http://domen/ , скрипт возвращает пустую строку, хотя
> >> ожидается "/".
> >> Если обращаюсь к http://domen/index.php , возвращается "/index.php",
> >> как и должно быть.
> >>
> >> Баг или фича?
>
> > Как выглядит конфигурация в районе fastcпi ?
> > Есть ли какие-нибудь rewrite'ы ?
>
> Вроде ничего особенного нет в конфиге. Все просто.
>
>
> server {
> listen 80;
> server_name domen;
>
> location / {
> root /home/domen/www;
> index index.php index.htm index.html;
> # rewrite ^/support/(.*)$ http://support.domen/$1
> permanent;
> }
Вот это
> if ($host ~* ^(www\.)*ddd\.ru$) {
> rewrite ^/(.*)$ http://domen/$1 permanent;
> }
лучше вынести с отдельный сервер:
server {
server_name ddd.ru www.ddd.ru;
rewrite ^/(.*)$ http://domen/$1 permanent;
}
> location ~ \.php$ {
> rewrite ^/subdir/(.*)$ http://support.domen/$1
> permanent;
> fastcgi_pass 127.0.0.1:9000;
> fastcgi_index index.php;
> fastcgi_param SCRIPT_FILENAME /home/domen/www$uri;
> # /home/flybb/www$uri;
> # fastcgi_script_name;
> fastcgi_param QUERY_STRING $query_string;
> fastcgi_param REQUEST_METHOD $request_method;
> fastcgi_param CONTENT_TYPE $content_type;
> fastcgi_param CONTENT_LENGTH $content_length;
> fastcgi_param DOCUMENT_ROOT $document_root;
> fastcgi_param GATEWAY_INTERFACE CGI/1.1;
> fastcgi_param PATH_TRANSLATED $document_root$uri;
> fastcgi_param REDIRECT_STATUS 200;
> fastcgi_param REMOTE_ADDR $remote_addr;
> fastcgi_param REMOTE_PORT $remote_port;
> fastcgi_param REMOTE_USER $remote_user;
> fastcgi_param REQUEST_URI $uri;
> fastcgi_param SCRIPT_NAME $fastcgi_script_name;
> fastcgi_param SERVER_ADDR $server_addr;
> fastcgi_param SERVER_NAME $server_name;
> fastcgi_param SERVER_PORT $server_port;
> fastcgi_param SERVER_PROTOCOL $server_protocol;
> fastcgi_read_timeout 5m;
> }
>
> }
Для /support/ и /subdir/ лучше сделать отдельные location.
Что касается REQUEST_URI для "/", то судя по конфигурации, он должен
быть равен /index.php, потому что сначала запрос попадает в "location /",
где для него находится index.php, после чего делается внутрений редирект
и запрос переходит к "location ~ \.php$", а $uri на этот момент равно
/index.php.
--
Игорь Сысоев
http://sysoev.ru