"Виртуальные" поддомены

malls
На сайте с 08.08.2005
Offline
255
1462

Помогите разобраться.

Есть домен. Сейчас в нем прописано, в апаче:

ServerName domain.ru

ServerAlias * www.domain.ru

в htaccess:

RewriteEngine on

RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.domain\.ru$
RewriteCond %{HTTP_HOST} (www\.)?(.*)\.domain\.ru$
RewriteCond %{REQUEST_URI} !^(/)?subdomains/
RewriteRule ^(.*)$ /%2/$1

Соответственно все поддомены работают в режиме:

sub.domain.ru = domain.ru/sub <= соответствует папке sub в корне, т.е. */public_html/sub/

Нужно перестроить всю это прелесть таким образом, чтобы папок вообще не было, но запросы обрабатывались по принципу:


1. sub.domain.ru/page.html = domain.ru/subdomain.php?fold=sub&file=page
2. domain.ru/sub/page.html = domain.ru/domain.php?fold=sub&file=page

т.е. просто двумя разными скриптами.

Пробовал переписывать htaccess - не получается в части субдоменов

RewriteEngine on

RewriteBase /
RewriteCond %{HTTP_HOST} !^(www\.)?\.domain\.ru$
RewriteCond %{HTTP_HOST} (www\.)?(.*)\.domain\.ru$
RewriteRule ^(.*)$ subdomain.php?fold=%2&file=$1


RewriteCond %{HTTP_HOST} ^(www\.)?domain\.org$
RewriteRule ^(.*)/(.*)$ domain.php\?fold=$1&file=$2

Т.е. второе правило обрабатывается, а первое не хочет.

dkameleon
На сайте с 09.12.2005
Offline
386
#1

если это на директадмине живёт, то реврайт вообще не нужен.

достаточно в панели добавить алиасы к основному домену в виде нужных поддоменов.

это скинет все поддомены в одну папку с доменом.

про вторую часть - не совсем понял.

подозреваю там можно будет как раз через хтаццесс с условием по домену.

Дизайн интерьера (http://balabukha.com/)
malls
На сайте с 08.08.2005
Offline
255
#2
dkameleon:
если это на директадмине живёт, то реврайт вообще не нужен.
достаточно в панели добавить алиасы к основному домену в виде нужных поддоменов.
это скинет все поддомены в одну папку с доменом.

Мне не нравится вариант с добавлением сотен алиасов - хочется автоматизма.

Нужели никто не может помочь?

malls
На сайте с 08.08.2005
Offline
255
#3

апну немного.

Люди - ну неужели у нас на форуме нет ни одного толкового спеца по mod_rewrite?

Если есть - помогите! Можно не бесплатно!

[Удален]
#4

malls, у вас кстати апач немного не так прописан, возможно в этом загвоздка не работы 1 части htaccess


<VirtualHost *:80>
DocumentRoot "/home/domen.ru/www"
ServerName "www.domen.ru"
ServerAlias domen.ru *.domen.ru
ErrorLog "/home/domen.ru/logs/error_log"
CustomLog /home/domen.ru/logs/access_log combined
</VirtualHost>

т.е. при вводе субдомена, будет грузится основной домен

malls
На сайте с 08.08.2005
Offline
255
#5
Phessiv:
malls, у вас кстати апач немного не так прописан, возможно в этом загвоздка не работы 1 части htaccess

Все одно не помогает.

Сделал по простому:

ServerName domain.ru

ServerAlias *.domain.ru

Т.е. формально www нигде не отображен, заметил странность:

www.domain.ru - отрабатывает как положено, т.е. как:

domain.ru/subdomain.php?fold=www&file=page

все остальное вида:

bla-bla.domain.ru не хочет.

Может где настройки какие-то надо пофиксить?

Блин - все, нашел где бага была! Всем спасибо!

dkameleon
На сайте с 09.12.2005
Offline
386
#6
malls:
Блин - все, нашел где бага была! Всем спасибо!

Всем расскажи :)

вообще, изначальные условия довольно поверхностны, чтобы от чего-то отталкиваться.

теоретически можно в байнде прописать вайлдкард для поддоменов. тут сисадмины могли бы помочь.

где-то то ли в дорвеях то ли ещё где, подобное решение обсуждалось.

malls
На сайте с 08.08.2005
Offline
255
#7
dkameleon:
Всем расскажи :)

Да я сам идиот...

В ТС все правильно прописано. Так и должно быть. Просто нужно еще в настройках DNS прописать, что-то вроде:

*.domain.ru.	IN	A	AAA.BBB.CCC.DDD

Я нафиг забыл совсем про это. Прсто когда попробовал для www.domain.ru - понял где надо багу искать, ибо вариант:

www.domain.ru.	IN	A	AAA.BBB.CCC.DDD
по умолчанию прописывается.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий