On Thu, 27 Mar 2003, Aleksandr Kulikov wrote:
> >>Случайно выяснилось, что при наличии в конфиге апача следующих строк
> >>
> >>===
> >>Alias /pictures /var/www/communiware/pictures
> >><Location /var/www/communiware/pictures>
> >> <IfModule mod_charset.c>
> >> CharsetDisable On
> >> </IfModule>
> >> SetHandler default-handler
> >> Options -Indexes
> >></Location>
> >><VirtualHost www.ru:80>
> >> ServerName www.ru
> >> RewriteEngine on
> >> AccelPass / http://localhost:8888/ [PH]
> >> RewriteOptions inherit
> >> RewriteRule ^/pictures/([^/]/.*) /var/www/communiware/pictures/$1 [L]
> >> RewriteRule ^/pictures/([^/][^/])(.*)
> >>/var/www/communiware/pictures/$1/$1$2 [L]
> >> AccelNoPass /pictures/ /~ /cgi-bin
> >> RewriteRule ^/cgi-bin/(.*) /var/www/communiware/cgi-bin/$1 [L]
> >> RewriteRule ^/([^~].*) http://localhost:8888/$1 [P]
> >> RewriteRule ^/$ http://localhost:8888/ [P]
> >></VirtualHost>
> >>запросы www.ru/pictures на бэкенд пробрасываются... это так и должно
> >>быть - ?
> >>Gor
> >>P.S. Server: Apache/1.3.26 (Unix) mod_accel/1.0.24
> >
> >
> > /pictures или /pictures/ ? Это разные вещи для данной конфигурации.
>
> /pictures/
> ... к счастью все решается локальным .htaccess - но это явный
> workaround... - вопрос про проброс все еще в силе...
Да, у меня в тестах /pictures/ и /pictures/aaa уходит на бэкенд, а,
скажем, /pictures/aaa/ и /pictures/aaa/a убрабатываются локально.
Мешанина AccelPass и RewriteRule [P] ни к чему хорошему не приводит.
В данном случае дело в 'RewriteRule ^/([^~].*) http://localhost:8888/$1 [P]'.
Если mod_accel работает первым, то он игнорирует /pictures/ в фазе трансляции.
Потом mod_rewrite для /pictures/ ставит обработчик accel-handler.
Если же mod_rewrite работает первым, то он сразу ставит обработчик
accel-handler и до фазы трансляции mod_accel'а не дело не доходит.
В обоих случаях запросы уходят на бэкенд.
Решения следующие:
1) усугубить винегрет и добавить 'RewriteRule ^/pictures/([^/].*) ...';
2) убрать все RewriteRule [P] - они лишние.
Игорь Сысоев
http://sysoev.ru