URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 2103
[ Назад ]

Исходное сообщение
"rewrite engine"

Отправлено Максим , 15-Фев-04 15:44 
Подскажите, пожалуйста, решение данной проблемы.
Есть домен www.test.ru. Его внутренний путь /home/test/.
Нужно при помощи rewrite engine сделать  так, чтобы при запросе
- first.test.ru данные брались из /home/test/users/first/
- second.test.ru данные брались из /home/test/users/second/
- third.test.ru данные брались из /home/test/users/third/
и т.д., в зависимости от субдомена.

Как это сделать?


Содержание

Сообщения в этом обсуждении
"rewrite engine"
Отправлено dev , 15-Фев-04 16:07 
>Подскажите, пожалуйста, решение данной проблемы.
>Есть домен www.test.ru. Его внутренний путь /home/test/.
>Нужно при помощи rewrite engine сделать  так, чтобы при запросе
> - first.test.ru данные брались из /home/test/users/first/
> - second.test.ru данные брались из /home/test/users/second/
> - third.test.ru данные брались из /home/test/users/third/
>и т.д., в зависимости от субдомена.
>
>Как это сделать?

1. Надо чтоб named знал, что все поддомены имеют один IP.
2. В доке на mod_rewrite есть конкретно этот пример:
http://httpd.apache.org/docs/misc/rewriteguide.html
/Virtual User Hosts


"rewrite engine"
Отправлено Максим , 15-Фев-04 16:19 
>1. Надо чтоб named знал, что все поддомены имеют один IP.
Знает.

>2. В доке на mod_rewrite есть конкретно этот пример:
>http://httpd.apache.org/docs/misc/rewriteguide.html
>/Virtual User Hosts

Вот виртуалхост:

<VirtualHost www.poo.ru:80>
   DocumentRoot "/home/design/poo"
   ServerName poo.ru
   ServerAlias www.poo.ru poo.ru *.poo.ru
   RewriteEngine on
   RewriteCond   %{HTTP_HOST}                 ^www\.[^.]+\.poo\.ru$
   RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
   RewriteRule   ^www\.([^.]+)\.poo\.ru(.*) /home/design/poo/users/$1$2
</VirtualHost>

При запросе www.test.poo.ru берет индекс из /home/design/poo/ а не из /home/design/poo/users/test/

В чем ошибся?


"rewrite engine"
Отправлено dev , 15-Фев-04 16:45 
><VirtualHost www.poo.ru:80>

1. М.б. <VirtualHost *> ?
2. Включай
  RewriteLog      /var/log/apache/rewrite.log
  RewriteLogLevel 9
и смотри.

(только что проверил - заработало сразу).


"rewrite engine"
Отправлено Максим , 15-Фев-04 18:20 
>><VirtualHost www.poo.ru:80>
>
>1. М.б. <VirtualHost *> ?

А если у меня не один домен в конфигах, сервер поймет такую строчку
применительно только к poo.ru ?


"rewrite engine"
Отправлено dev , 15-Фев-04 23:16 
>>><VirtualHost www.poo.ru:80>
>>
>>1. М.б. <VirtualHost *> ?
>
>А если у меня не один домен в конфигах, сервер поймет такую
>строчку
>применительно только к poo.ru ?

Проблемы м.б. только если у тебя помимо name-based виртуальных серверов еще и виртуальные сервера на разных IP сидят.


"rewrite engine"
Отправлено Максим , 15-Фев-04 18:41 
>><VirtualHost www.poo.ru:80>
>
>1. М.б. <VirtualHost *> ?
>2. Включай
>  RewriteLog      /var/log/apache/rewrite.log
>  RewriteLogLevel 9
>и смотри.
>
>(только что проверил - заработало сразу).


Вот что в логах:

[www.test.poo.ru/sid#81d4a78][rid#9738f90/subreq] (2) init rewrite engine with requested uri /index.php
213.252.112.151 - - [15/жЕЧ/2004:18:38:05 +0300] [www.test.poo.ru/sid#81d4a78][rid#9738f90/subreq] (3) applying pattern '^(.+)' to uri '/index.php'
213.252.112.151 - - [15/жЕЧ/2004:18:38:05 +0300] [www.test.poo.ru/sid#81d4a78][rid#9738f90/subreq] (4) RewriteCond: input='%(HTTP_HOST)' pattern='^www\.[^.]+\.poo\.ru$' => not-matched
213.252.112.151 - - [15/жЕЧ/2004:18:38:05 +0300] [www.test.poo.ru/sid#81d4a78][rid#9738f90/subreq] (1) pass through /index.php
213.252.112.151 - - [15/жЕЧ/2004:18:38:05 +0300]


"rewrite engine"
Отправлено dev , 15-Фев-04 23:14 
>213.252.112.151 - - [15/жЕЧ/2004:18:38:05 +0300] [www.test.poo.ru/sid#81d4a78][rid#9738f90/subreq] (4) RewriteCond: input='%(HTTP_HOST)' pattern='^www\.[^.]+\.poo\.ru$' => not-matched

Вот в этой строчке уже ошибка. Должно быть
... input='www.test.poo.ru' ...
Ты случаем в строчке
RewriteCond  %{HTTP_HOST}  ^www\.[^.]+\.poo\.ru$
круглые скобки вместо фигурных не написал?


"rewrite engine"
Отправлено GliNT , 24-Фев-04 18:52 
Строчку
RewriteRule   ^www\.([^.]+)\.poo\.ru(.*) /home/design/poo/users/$1$2

mod_rewrite интерпретирует не так, как ты ожидаешь.
Судя по всему, правила regexp он понимает всего лишь БАЗОВЫЕ, т.е. [^.] не проканает.