ПРОЕКТЫ 


  АРХИВ 


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: Проблема с index i ndex.html и rewrite



On Fri, Aug 15, 2008 at 05:15:53PM +0400, Vladislav Komissarov wrote:

> > Зачем статичный root определять через переменные ?
> 
> $srv_root используется в других местах. Дабы не дублировать - вынес в
> отдельную переменную.
> 
> Это плохо?

Если $srv_root используется только директивах root и не меняется, то - да.
Достаточно описать

    server {

        root  /var/www/domain.ru/htdocs;

и этот root будет унаследован во все location'ы.

> 15 августа 2008 г. 16:23 пользователь Igor Sysoev <is@xxxxxxxxxxxxx>написал:
> 
> > On Fri, Aug 15, 2008 at 04:09:52PM +0400, Владислав Комиссаров wrote:
> >
> > > Ситуация следующая.
> > >
> > > server {
> > > ...
> > >   set $srv_root  /var/www/domain.ru/htdocs;
> > > ...
> > >
> > >   location / {
> > >     root $srv_root;
> > >     index index.html;
> > >
> > >     if (!-f $request_filename){
> > >         rewrite (.*) /index2.html;
> > >     }
> > >   }
> > >
> > >   location /public/ {
> > >       root $srv_root;
> > >   }
> > > }
> >
> > Зачем статичный root определять через переменные ?
> >
> > > При таком конфиге, я ожидаю что при запросе http://www.domain.ru/ будет
> > > произведен внутренний редирект на /index.html, который не попадет в !-f
> > > $request_filename и сервер отдаст клиенту /var/www/
> > > domain.ru/htdocs/index.html, но вместо этого клиенту отдается
> > index2.html
> > >
> > > Есть предположение, что при внутреннем редиректе на /index.html в
> > > $request_filename остается "/".
> >
> > if (!-f $request_filename) выполняется раньше поиска index.html для /.
> >
> > Не нужно использовать "if (!-f $request_filename)" !
> > Не нужно использовать "if (!-f $request_filename)" !
> > Не нужно использовать "if (!-f $request_filename)" !
> >
> > Не нужно!
> >
> >    root /var/www/domain.ru/htdocs;
> >
> >    location / {
> >         index  index.html;
> >        error_page  404 = /index2.html;
> >    }
> >
> >
> >
> > --
> > Игорь Сысоев
> > http://sysoev.ru
> >
> >

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



 




Copyright © Lexa Software, 1996-2009.