среда
Как автоматически создавать поддомены
Задача: при обращении к поддомену сервер должен отдавать контент из соответствующей поддиректории для заданного VirtualHost.
Есть 2 способа решения задачи, и какой из них лучше – решайте сами.
В любом случае, сначала надо настроить WildCard DNS на домене, иначе ничего работать не будет.
Если Ваш проект хостится у firstvds или у minivds, то при добавлении домена на Ваш аккаунт файл зоны будет выглядеть примерно так:
Чтобы включить WildCard DNS, достаточно в файл зоны добавить всего одну строчку и поменять цифры в serial number зоны. После исправлений файл доменной зоны будет выглядеть так:
Через некоторое время можно попробовать пингануть домены abc.domain.com, asfwsegws.domain.com – доменное имя 3-го уровня должно определяться с тем же IP-адресом, что и доменное имя 2-го уровня.
Вот теперь можно переходить к настройке сабдоменов.
Способ номер 1: вносим изменения в httpd.conf
Выглядит это примерно так:
Перезапускаем apache и все – любая поддиректория, созданная в /home/domain/data/www/domain.com/ будет доступна как поддомен. Это самый правильный вариант создания поддоменов.
Но такой способ не будет работать на виртуалхостингах, поскольку доступ пользователю к httpd.conf никто не даст.
Способ номер 2: поддомены через .htaccess:
В этом случае при обращении к subdomain1.domain.com или к www.subdomain1.domain.com пользователь будет перенаправлен на URL http://www.domain.com/subdomain1/ и он это заметит.
Есть 2 способа решения задачи, и какой из них лучше – решайте сами.
В любом случае, сначала надо настроить WildCard DNS на домене, иначе ничего работать не будет.
Если Ваш проект хостится у firstvds или у minivds, то при добавлении домена на Ваш аккаунт файл зоны будет выглядеть примерно так:
$TTL 3600
domain.com. IN SOA ns1.minivds.com. root.mylogin.minivds.com. (2007041702 10800 3600 604800 86400)
;
domain.com. IN NS ns1.minivds.com.
domain.com. IN NS ns2.minivds.com.
domain.com. IN MX 10 mail
domain.com. IN MX 20 mail
domain.com. IN A XXX.YYY.ZZZ.WWW
www IN A XXX.YYY.ZZZ.WWW
ftp IN A XXX.YYY.ZZZ.WWW
mail IN A XXX.YYY.ZZZ.WWW
smtp IN A XXX.YYY.ZZZ.WWW
pop IN A XXX.YYY.ZZZ.WWW
domain.com. IN TXT "v=spf1 a mx ~all"
Чтобы включить WildCard DNS, достаточно в файл зоны добавить всего одну строчку и поменять цифры в serial number зоны. После исправлений файл доменной зоны будет выглядеть так:
$TTL 3600
domain.com. IN SOA ns1.minivds.com. root.mylogin.minivds.com. (2007041703 10800 3600 604800 86400)
;
domain.com. IN NS ns1.minivds.com.
domain.com. IN NS ns2.minivds.com.
domain.com. IN MX 10 mail
domain.com. IN MX 20 mail
domain.com. IN A XXX.YYY.ZZZ.WWW
www IN A XXX.YYY.ZZZ.WWW
ftp IN A XXX.YYY.ZZZ.WWW
mail IN A XXX.YYY.ZZZ.WWW
smtp IN A XXX.YYY.ZZZ.WWW
pop IN A XXX.YYY.ZZZ.WWW
* IN A XXX.YYY.ZZZ.WWW
domain.com. IN TXT "v=spf1 a mx ~all"
Через некоторое время можно попробовать пингануть домены abc.domain.com, asfwsegws.domain.com – доменное имя 3-го уровня должно определяться с тем же IP-адресом, что и доменное имя 2-го уровня.
Вот теперь можно переходить к настройке сабдоменов.
Способ номер 1: вносим изменения в httpd.conf
Выглядит это примерно так:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain.com
RewriteCond %{HTTP_HOST} !^cgi-bin\.domain\.com$ # запрещаем перенаправление для cgi-bin
RewriteCond %{HTTP_HOST} ^(www\.)?(([^\.]+)\.){1}domain.com$
RewriteCond /home/domain/data/www/domain.com/%3 -d
RewriteRule ^/(.*) /%3/$1
Перезапускаем apache и все – любая поддиректория, созданная в /home/domain/data/www/domain.com/ будет доступна как поддомен. Это самый правильный вариант создания поддоменов.
Но такой способ не будет работать на виртуалхостингах, поскольку доступ пользователю к httpd.conf никто не даст.
Способ номер 2: поддомены через .htaccess:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain1.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.subdomain1.domain.com$
RewriteRule ^(.*)$ http://www.domain.com/subdomain1/ [R=301,L]
RewriteCond %{HTTP_HOST} ^subdomain2.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.subdomain2.domain.com$
RewriteRule ^(.*)$ http://www.domain.com/subdomain2/ [R=301,L]
В этом случае при обращении к subdomain1.domain.com или к www.subdomain1.domain.com пользователь будет перенаправлен на URL http://www.domain.com/subdomain1/ и он это заметит.
Комментарии:
Ссылки на это сообщение:
<< Главная страница
А для совсем ленивых или тех кто не умеет кавырятся в шеле, можно ткнуть один раз мышкой через ISPmanager и получить тотже самый эффект.
Все верно, Wildcard DNS создается в один-два клика в ISPmanager'e.
Но это не спасает от правки .htaccess или httpd.conf для перенаправления серфера в поддиректории.
Но это не спасает от правки .htaccess или httpd.conf для перенаправления серфера в поддиректории.
Автоподдомены кстати ISPmanager научился недавно создавать через mod_vhost_alias, на хостинге FirstVDS.ru работает, включается одной галочкой :)
Просто создаешь папку в www/имя-домена и она видна как папка.домен через браузер.
Просто создаешь папку в www/имя-домена и она видна как папка.домен через браузер.
Верно, так тоже можно.
Осталось только выяснить, что же сильнее нагружает систему, mod_vhost_alias или mod_rewrite. Да и с mod_rewrite мне привычнее работать.
Осталось только выяснить, что же сильнее нагружает систему, mod_vhost_alias или mod_rewrite. Да и с mod_rewrite мне привычнее работать.
Люди такой вопрос, извиняюсь может не в тему? У меня сайт на firstvds. Получается как бы выделенный сервер. Но как на нем создать сайт? Ибо говорят, что сначала надо создать пользователя, а потом для него можно создавать будет сайт, а это уже получается, что я на своем серваке создал виртуальный хост, нахрен он мне нужен? Как сделать чисто на выделенном? Чтобы был root и просто один домен? Спасибо.
юрий, все верно, надо создавать пользователя. К пользователю привязать www-домен, тогда в домашней директории пользователя создастся директория www/domain.com; и как ты верно подметил, в апаче он будет отражаться как виртуалхост.
А нужен он для того, чтобы можно было управлять доменом через ISPmanager, разруливать права между пользователями, в целях безопасности и т.д. Если хочешь, можешь конечно создать все руками и не трогать ISPmanager, но тогда и исправлять придется все руками.
А нужен он для того, чтобы можно было управлять доменом через ISPmanager, разруливать права между пользователями, в целях безопасности и т.д. Если хочешь, можешь конечно создать все руками и не трогать ISPmanager, но тогда и исправлять придется все руками.
Хорошо, это я понял, но вот настроить виртуальные субдомены у меня не получилось. В httpconf прописывал Serveralias *.cmslive.ru - не обрабатывает главную хоть тресни, посмотрите пожалуйста там в сообществах выдает ошибку, что адрес http://****.cmslive.ru не доступен.
Юрий, я не уверен, что у тебя проблема с mod_rewrite или с неправильной настройкой httpd.conf
Попробуй создать простой текстовый файл, скажем, test.txt, и помести его в директорию /home/admin/data/www/cmslive.ru/blog/
Если ты все правильно сделал, то файл должен быть доступен через браузер по адресам
http://www.cmslive.ru/blog/test.txt и http://blog.cmslive.ru/test.txt
Если он доступен, то вся проблема исключительно в твоей CMS.
Попробуй создать простой текстовый файл, скажем, test.txt, и помести его в директорию /home/admin/data/www/cmslive.ru/blog/
Если ты все правильно сделал, то файл должен быть доступен через браузер по адресам
http://www.cmslive.ru/blog/test.txt и http://blog.cmslive.ru/test.txt
Если он доступен, то вся проблема исключительно в твоей CMS.
спасибо. Я написал такой хтакс
RewriteCond %{HTTP_HOST} !^www.blabla.ru$ [NC]
RewriteCond %{HTTP_HOST} ^(([a-z0-9]+)\.)blabla.ru$ [NC]
RewriteRule ^(.*)$ http://blabla.ru/user/profile/%2/$1 [L,QSA]
Как сделать так чтобы перенаправленный урл скрывался в строке адреса, а на его месте все так же оставался username.blabla.ru
RewriteCond %{HTTP_HOST} !^www.blabla.ru$ [NC]
RewriteCond %{HTTP_HOST} ^(([a-z0-9]+)\.)blabla.ru$ [NC]
RewriteRule ^(.*)$ http://blabla.ru/user/profile/%2/$1 [L,QSA]
Как сделать так чтобы перенаправленный урл скрывался в строке адреса, а на его месте все так же оставался username.blabla.ru
В том виде, в котором написано у Вас, ничего не выйдет. Вы берете один исходный URL и заменяете его на второй, т.е. для пользователя это будет выглядеть как редирект, и он заметит подмену URLa.
Попробуйте перенаправлять пользователя не на URL, а на локальный файл, который и обработаетcя под старым урлом. Пример можно посмотреть здесь. Сам я такого не делал ни разу, но возможно, Вам оно поможет.
Попробуйте перенаправлять пользователя не на URL, а на локальный файл, который и обработаетcя под старым урлом. Пример можно посмотреть здесь. Сам я такого не делал ни разу, но возможно, Вам оно поможет.
Единственное чего не понял так это зачем руками что-то в файл зоны писать? В остальном замечаний нет.
Отправить комментарий
Подпишитесь на каналы Комментарии к сообщению [Atom]
Ссылки на это сообщение:
<< Главная страница


