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

Когда может понадобится создание динамических поддоменов?

Создание динамических поддоменов может понадобится для решения разных задач. Очень часто их используют чтобы сделать открытие аккаунтов пользователей сайта на поддоменах с их именами. Например, при заходе на username.unetway.com открывать содержимое скрипта unetway.com/users.php?login=username.

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

Если доменов несколько, то конечно их лучше создать вручную. А когда их уже больше пяти, то стоит воспользоваться созданием динамических поддоменов.

Создание динамических поддоменов через DNS

Для начала необходимо настроить DNS на вашем веб-сервере:

  • В настройках DNS вашего домена добавьте wildcard запись *.unetway.com, чтобы запросы на любой поддомен, шли на основной домен вашего сайта.
  • В настройках веб-сервера пропишите virtualhost (виртуальный хост)  * - звездочку, чтобы все запросы обрабатывались одним доменом.

Таким образом, все запросы на *.unetway.com вы можете обрабатывать своим скриптом.

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

Одним из самых легких способов создания автоматических поддоменов, является использование файла  htaccess. Возможность его использовать есть на любом хостинге (кроме каких-то закрытых платформ по созданию сайтов).

Пример кода, для создания динамических поддоменов через htaccess, выглядит следующим образом:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.unetway\.com$
RewriteCond %{HTTP_HOST} ^(.*)\.unetway\.com$
RewriteRule ^(.*)$ http://unetway.com/users.php?login=%1 [L,P]

Создание динамических поддоменов через Apache

В конфигурации Apache вам необходимо прописать виртуальный хост, чтобы все поддомены обрабатывались этим виртуальным хостом. Пример кода, для создания динамических поддоменов через Apache, выглядит следующим образом:

<VirtualHost *:80>
ServerName www.unetway.com
ServerAlias unetway.com *.unetway.com
DocumentRoot /www/home
</VirtualHost>

Создание динамических поддоменов через Nginx

Пример кода, для создания динамических поддоменов через Nginx, выглядит следующим образом:

server {
    server_name   www.unetway.com;

    location / {
         proxy_pass 11.22.33.44:8080;
    }
}

server {
    server_name   ~^(?<user>[a-z0-9\-]+)\.unetway.com$;

    location / {
        proxy_pass 11.22.33.44:8080/users/$user$uri$is_args$args;
    }
}

Вот и все. На входе в скрипт вашего веб-приложения, вам остается только определять, к какому домену был направлен запрос и в зависимости от этого выводить необходимые данные.