Re: виртуальные хосты и mod_rewrite
От: Caesar  
Дата: 11.06.04 19:57
Оценка:
Вот немного переделанный (что есть более правильный) вариант настройки:

Допустим есть запрос http://mail.home/
RewriteEngine On
RewriteMap  lc int:tolower

#Собственно файл, где имена хостов и пути к documentroot 
#файл вида: mail.home /home/mail/www                              
RewriteMap  vhostsmap txt:/hosts/vhosts.map

#Переводим в нижний регистр URL запрос
RewriteCond ${lc:%{HTTP_HOST}|NONE} ^(.+)$

#проверяем не хост ли сервера?
RewriteCond %{HTTP_HOST}     !^[w]*\.(gcserver.home)$

#теперь сравниваем запрос с имеющимися у нас виртуал хостами
RewriteCond ${vhostsmap:%{HTTP_HOST}} ^/(.*)$ [NC]

#и если все в порядке то получаем путь
RewriteRule ^/(.*)$ g:/hosts/%1/$1 [NC,PT]


на выходе получаем /hosts/home/mail/www/
и все. дальше от сервера приходит ответ что запрос ошибочный, хотя каталог есть. в нем лежит index.php на сервере он указан в DirectoryIndex

Вот пример лога:
(2) init rewrite engine with requested uri /
(3) applying pattern '^/(.*)$' to uri '/'
(5) map lookup OK: map=lc key=mail.home -> val=mail.home
(4) RewriteCond: input='mail.home' pattern='^(.+)$' => matched
(4) RewriteCond: input='mail.home' pattern='!^[w]*\.(gcserver.home)$' => matched
(4) RewriteCond: input='mail.home' pattern='^(.*)\.([a-zA-Z]+)[/]?$' => matched
(6) cache lookup FAILED, forcing new map lookup
(5) map lookup OK: map=vhostsmap key=mail.home[txt] -> val=/home/mail/www
(4) RewriteCond: input='/home/mail/www' pattern='^/(.*)$' => matched
(2) rewrite / -> g:/hosts/home/mail/www/
(2) forcing 'g:/hosts/home/mail/www/' to get passed through to next API URI-to-filename handler


подскажите почему может такое быть?[/code]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.