ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-talk] =?koi8-r?B?98nS1NXBzNjO2cUgyM/T1Nkg3sXSxdogbW9kX3Jld3JpdGU=?=




Доброе время!

Условия:
1. Есть виртуальный хостинг у стороннего проф.хостера
(конкретно - Masterhost).
2. Есть возможность Rewrite'ов в .htaccess.
3. Доступа к httpd.conf нет.
4. Адрес домашней директории: /home/u1234/site.ru/www/
5. Все запросы вида http://чтоугодно.site.ru
переадресуются в домашнюю директорию.

Задача:
Организовать передачу запросов вида
http://vhost.site.ru в директорию
/home/u1234/site.ru/www/vhost/ для любых имен vhost,
равно как и http://www.vhost.site.ru - туда же.
При этом регистр написания vhost.site.ru и www.vhost.site.ru - любой,
а регистр наименования папки /vhost/ - всегда lowercase.

Попытки решения:
-----------------------------------------------------------
Вариант 1 (из оригинального URL Rewriting Guide).

RewriteEngine on
RewriteCond   %{HTTP_HOST}                 ^www\.[^.]+\.site\.ru$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^www\.([^.]+)\.site\.ru(.*) /home/u1234/site.ru/www/$1$2

Не работает вообще. Возможно, происходит зацикливание
из-за совпадения части пути на сервере - /site.ru/ -
с адресом сайта.
-----------------------------------------------------------
Вариант 2 (предложен хостерами; так ими и не доделан).

RewriteEngine on
RewriteCond  %{HTTP_HOST}              ^[^.]+\.joo\.ru$
RewriteRule  ^(.+)                     %{HTTP_HOST}/$1   [C]
RewriteRule  ^([^\.]+)\.joo\.ru/(.*)$  /$1/$2

Это якобы работает в httpd.conf в разделе virtual hosts,
но это непроверенный факт; и разыскивается решение для .htaccess.
-----------------------------------------------------------
Вариант 3.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^.+\.site\.ru$ [NC]
RewriteRule  ^(.+)       %{HTTP_HOST}$1
RewriteRule ^(.+)\.site\.ru http://site.ru/$1/  [NE,R]

Это работает в .htaccess, но происходит обычная
внешняя переадресация на http://site.ru,
а требуется организовать полноценный домен
третьего уровня.
-----------------------------------------------------------

Возможно, необходимо добавить что-то типа:
RewriteBase   /home/u1234/site.ru/www/

Но что именно?
Как это должно выглядеть в окончательном варианте?
И как учесть регистр букв?

В результате моих "смелых экспериментов"
сервер хост-провайдеров просто виснет из-за
некоего зацикливания следующего вида:

"/site.ru/www/tmpsite.ru/www/tmpsite.ru/www/tmpsite.ru
/www/tmpsite.ru/www/tmpsite.ru/www/tmpsite.ru/www/tmpindex.php
/www/tmpindex.php"... и так далее.

Также смущает следующая фраза о Virtual Hosts
в URL Rewriting Guide:
"For HTTP/1.0 requests there is no solution,
but for HTTP/1.1 requests which contain a Host: HTTP header
we can use the following ruleset to rewrite
http://www.username.host.com/anypath internally to
/home/username/anypath:"
Что это значит практически - "For HTTP/1.0 requests there is no
solution"?

Также интересно: известны ли вообще успешные случаи
использования mod_rewrite для организации Virtual Hosts?

К большому сожалению, моих знаний для решения этой проблемы
не хватает. Очень рассчитываю на помощь людей,
понимающих mod_rewrite и связанные с этим моменты.

Заранее спасибо.


Использовались следующие источники вдохновения:
URL Rewriting Guide - http://httpd.apache.org/docs/misc/rewriteguide.html
(особенно в части "Virtual User Hosts")
mod_rewrite docs - http://httpd.apache.org/docs/mod/mod_rewrite.html


--


Всех благ,
joo               mailto:apache@joo.ru

=============================================================================
=               Apache-Talk@lists.lexa.ru mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =



 




Copyright © Lexa Software, 1996-2009.