Создание пачки поддоменов через .htaccess

Иногда надо создавать автоматически поддомен в какой-либо зоне. Например, для хостинга домашних страничек пользователей. Вот как это делается:

1. Нам надо создать запись для всех поддоменов в домене.

В зону мы вносим новый домен «*», ссылающийся на необходимый IP адрес сервера.

2. Настраиваем Apache.

Создаем вирутальный хост с примерно такими параметрами:

<VirtualHost *:80>
DocumentRoot /var/www/example.com
ServerName example.com

ServerAlias *.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^((.*)\.)example.com$
RewriteRule ^/(.*) /%2/$1

</VirtualHost>

Теперь, чтоб у нас работал сайт, создаем каталог /var/www/example.com/www и туда заливаем содержимое сайта www.example.com. По аналогии делаем для остальных поддоменов.

Собственно все.

Поделиться этой заметкой с друзьями:

Добавь меня:

Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

11 комментариев(я)

  • 20.12.2008 10:31, онлайн фильмы сказал:

    не получается, идет перенаправление на хостинг

    • 28.01.2009 23:02, _sty_ сказал:

      SilverGost, спасибо. Я написал такой хтакс

      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

      • 29.10.2009 09:13, Лёлик сказал:

        У меня практический вопрос, данное прописывание – работает. Но возникает одна сложность. Во всех поддоменах меняется корень и если для домена первого уровня example.com корень, например выглядит /home/example.com/
        то для поддомена ru.example.com корень уже будет /home/example.com/ru/
        А неудобство в том, что все картинки css и js файлы ищутся в соответствии с новым корнем.
        Как прописать всем поддоменам единый корень?

        P.S. RewriteBase / не принимает пишет при попытке перезапуска апача:
        «RewriteBase: only valid in per-directory config files»

        • 25.06.2011 19:25, Оксанка сказал:

          Пропишите в HTML код вашего сайта внутри раздела HEAD тэг BASE с указанием правильного пути.

        • 20.03.2010 16:22, Гоша сказал:

          эээ да это бесусловно рабтает что почему тема называется создание через .htaccess усли все делается в вирт хосте….

          • 07.05.2011 18:03, alex сказал:

            Подскажите пожалуйста, как автоматически сообщать DNS-серверу о том, что были созданы новые поддомены?

            • 10.05.2011 09:56, maxim сказал:

              Например, структура поддоменов:
              site.ru/www
              site.ru/rnd
              site.ru/rnd2
              site.ru/rnd3
              Где rnd, rnd2, rnd3 – поддомены, а www – это site.ru

              Хочу сделать так, чтобы при переходе на поддомен (rnd, rnd2, rnd3) адрес в стоке не менялся, а скрипты работали из папки www.

              Например, перехожу на rnd.site.ru, в адресной строке остается тот же адрес, но начинает работать скрипт site.ru/www/index.php

              Если бы кто подсказал как сделать был бы очень благодарен!

              • 10.05.2011 10:18, Dmitriy Lyalyuev сказал:

                .htaccess + mod_rewrite = то, что нужно. ;)

                • 10.05.2011 10:32, maxim сказал:

                  Я не особо силен в .htaccess + mod_rewrite.Пробовал так:
                  RewriteCond %{HTTP_HOST} ^.*msk\.site\.info [NC]
                  RewriteRule ^(.*) http://site.info/ [P,L]

                  Локальный сервер пишет, что Вероятнее всего, сервер пытается найти файл Z:/home/site.info/msk/, которого не существует (путь такой есть).

                  Dmitriy Lyalyuev, не подскажете как конкретно это сделать? :)

            • 1 старых комментариев не отображается. Нажмите, чтобы отобразить все.
            (Обязательно)
            (Обязательно, не публикуется)

            "АБЫРВАЛГ!", сказал линукс после руссификации.