Настройка общих поддоменов (wildcard subdomains) в Apache

Настройка общих поддоменов за 5 минут

За последнюю неделю мне уже несколько раз приходилось рассказывать, как настраивать общие поддомены (известные как wildcard subdomains) в Apache и BIND/MaraDNS, поэтому решил написать статью, к которой можно будет отсылать интересующихся Общие поддомены используются в силу множества причин: создание многопользовательских инсталляций блогов/форумов, где каждый пользователь получает домен вида username.domain.tld (в качестве примера можно привести известный [...]

← Вернуться к полной версии записи «Настройка общих поддоменов (wildcard subdomains) в Apache»…

Автор: ; опубликовано в: Администрирование; метки: Apache, BIND, общий поддомен
20
Апр
2008

RSS Комментарии к статье «Настройка общих поддоменов (wildcard subdomains) в Apache» (38)  »

  1. Спасибо, помогло.

    P.S. значение ServerName и ServerAlias можно писать без кавычек – будет читабельнее.

  2. MechanisM

    Здравствуйте Владимир! Даже будучи Flex-девелопером я зачитался вашим блогом)) много всего полезного и интересного! И подход у вас своеобразный!! Хотел задать Вам вопрос для разрешения одной моей проблемы.. Как-раз связанной с темой данного поста.
    Как сделать имя пользователя субдоменом???
    если файл .htaccess следующий:

    [-]
    View Code Apache configuration
    RewriteEngine On
    Options +Followsymlinks
    RewriteBase /
    #.......
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/?$ /profile.php?user=$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/([^/]+)?$ /profile.php?user=$1$2 [L]
    #.......

    Или подскажите ссылочки где можно посмотреть. Я, к сожалению в этом не очень силен.

    • У меня сейчас нет Апача под рукой, но первое, что приходит на ум:

      [-]
      View Code Apache configuration
      RewriteCond %{HTTP_HOST}  !^$
      RewriteCond %{HTTP_HOST}  !^www\.              [NC]
      RewriteCond %{HTTP_HOST}  ^([a-z0-9]+)\.(.+)$   [NC]
      RewriteRule ^(.*)         http://%2/$1?user=%1 [L,R=301]

      Посмотрите эту статью, там есть похожие примеры.

  3. Сергей

    Здравствуйте!

    Не могу установить WordPress MU так, чтобы он использовал поддомены. Нашел эту статью по запросу: “добавить wildcard запись в ваши записи DNS”. Пользуюсь Windows XP SP3 и веб-сервером, сконфигурированном в ручную в связке Apache 2.2.13 + PHP 5.3 + MySQL 5.1.39 + phpMyAdmin. В конфиге Apache у меня присутствует следующее:

    [-]
    View Code Apache configuration
    #  ServerAlias *.test1.ru
      RewriteEngine On
      RewriteCond %{HTTP_HOST} !^www.test1.ru$
      RewriteCond %{HTTP_HOST} ^((.*)\.)test1.ru$
      RewriteRule ^/(.*) /%2/$1

        ServerAdmin admin@example.com
        ServerName test1.ru
        DocumentRoot "C:/My site/www"

        ServerAlias "test1.ru" "www.test1.ru"
        ServerAlias "test1.ru" "www.test1.ru" "*.test1.ru"
     #   ScriptAlias /cgi/ "C:/home/a.ru/cgi/"
     #   ErrorLog C:/home/a.ru/error.log
     #   CustomLog C:/home/a.ru/access.log common

    Но ничего не работает. Установка WPMU запускается, а вот завершиться она не может! На втором этапе появляется пустая страница с шапкой WPMU, обновление которой ни к чему не приводит…

    Пробовал установить WPMU на Денвер. После такой установки и входа в админ-панель у меня открывается страница со следующими ошибками:

    [-]
    View Code Text
    Deprecated: Assigning the return value of new by reference is deprecated in Z:\home\wp.wp\www\wp-settings.php on line 629

    Deprecated: Assigning the return value of new by reference is deprecated in Z:\home\wp.wp\www\wp-settings.php on line 644

    Deprecated: Assigning the return value of new by reference is deprecated in Z:\home\wp.wp\www\wp-settings.php on line 651

    Deprecated: Assigning the return value of new by reference is deprecated in Z:\home\wp.wp\www\wp-settings.php on line 687

    Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\home\wp.wp\www\wp-settings.php on line 18
    The blog you have requested is not installed properly. Please contact the system administrator.

    Отображаются только эти ошибки и больше ничего! Скажите, пожалуйста, как с ними бороться?…

    • Сергей, а DNS настроен? Без DNS-то работать не будет. Нужно, чтобы для test1.ru и всех поддоменов test1.ru система возвращала один и тот же IP-адрес. Это выполняется?

  4. Сергей

    Вопрос решен! Просто Lecactus что-то видать упустил и его сборка у меня не работает, зато WordPress MU 2.9.1.1 установился и работает на ура! Перенес все плагины с обычного WP на WPMU и сейчас все это настраиваю… Пусть будет всем, как совет!=)

  5. Сергей

    Хочу создать блог blog.test1.ru, т.е. блог на поддомене основного блога. Через панель “Администратор – блоги” создал новый блог blog, но когда я нажимаю ссылку “Панель”, чтобы зайти в администрирование этого блога, открывается страница http://blog.test1.ru/wpmu/wp-admin/ с ошибкой:

    Not Found

    The requested URL /wpmu/wp-admin/ was not found on this server.

    Решил в файле host из системной папки добавить строчку:

    [-]
    View Code Text
    127.0.0.1       blog.test1.ru

    но ошибка не исправилась… При этом когда я устанавливал WPMU 2.9.1.1, мне выдалось сообщение о том, что запись wildcard в DNS не добавлена, хотя я в конфигурацию Apache добавил строчку:

    [-]
    View Code Apache configuration
    ServerAlias "test1.ru" "www.test1.ru" "*.test1.ru"

    Что можно сделать?…

    • Сергей

      Забыл сказать, что DNS-клиент в Windows XP SP3 у меня активен…

    • запись wildcard в DNS не добавлена, хотя я в конфигурацию Apache добавил строчку

      DNS — это не Apache.

      После добавления строки Вы Apache перезапускали?

      Попробуйте так:

      [-]
      View Code Apache configuration
      ServerAlias test1.ru *.test1.ru
    • Да, в примере выше у Вас две директивы ServerAlias. Оставьте только одну.

      • Сергей

        Убрал кавычки со строки, перезапустил Apache, но все равно мне не удается попасть в администрирование нового блога… Возможно придется настраивать его уже на хостинге…

  6. Сергей

    Так и не решился вопрос с настройкой поддержки поддоменов Apache… Что можно сделать? Подскажите, пожалуйста…

  7. Иван

    Здравствуйте Владимир. Такая вот ситуация.Имеется win 7 x32. Имеется домен 2-го уровня, настроенный через панель управления доменом

    [-]
    View Code Text
    www.mydomen.kz CNAME mydomen.dyndns-home.com
    mydomen.kz CNAME mydomen.dyndns-home.com
    localhost.mydomen.kz A 127.0.0.1

    то есть через сервис- dyndns,ибо айпишник динамический. есть желание создать 2-3 поддомена

    как я понял необходимо добавить запись у регистратор вида

    *.mydomen.kz A мой_ip

    но максимум что я могу указать(опять же огромный минус динамического ip)

    *.mydomen.kz A mydomen.dyndns-home.com

    но такая запись неприемлема.
    как можно это обойти?

  8. Иван

    вообщем прописал cname запись для поддомена, прописал вот так
    bunya.mydomen.kz IN CNAME mydomen.dyndns-home.com.
    в принципе открывается, но открывает почему-то основной сайт а не папку для домена, конфиг апача пригалагаю, для уменьшения объема удалил все запись Loadmodule и include

  9. Здравствуйте. Возможно добавить алиас не имея доступа к конфигу апача, например, через cPanel?

  10. ar2ra

    думал, что толково, но полная чушь. Ты если объясняешь, потрудись подумать хорошенько, а не лиж бы как нибудь…

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «Настройка общих поддоменов (wildcard subdomains) в Apache»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा