Когда кто-то регистрируется в Blogger или WordPress, он получает свой собственный поддомен, который работает мгновенно. Как мне добиться того же, имея свой VPS/VDS/выделенный сервер?
Создание поддоменов на лету
Ответы (2)
В двух словах:
- Создайте подстановочный домен в DNS (т. е. разрешение what.yourdomain.example возвращает ваш IP),
- создайте виртуальный хост по умолчанию на своем веб-сервере и
- проверьте URL-адрес в своем приложении.
Как это сделать, зависит от того, какую технологию вы используете. Приведу несколько примеров:
- Как настроить подстановочный домен в BIND и в DNS Windows Server.
- Чтобы создать виртуальный хост по умолчанию, вам просто нужно создать веб-сервер без записи хоста в IIS. В Apache первый виртуальный хост, указанный в файле конфигурации, становится хостом по умолчанию.
- Здесь вы можете либо (а) переписать URL-адрес в зависимости от домена (т. е. преобразовать поддомен в параметр в URL-адресе, пример для ASP. NET, примеры для Apache с mod_rewrite: Link1, Link2) или (б) просто посмотрите на хост-часть URL-адреса (например,
Request.Url
в ASP.NET).
Дополнение от bortzmeyer (извините за перезапись вашего редактирования, возник конфликт редактирования):
Синтаксис подстановочного знака в обычном формате файла зоны DNS (описанном в RFC 1035 и реализованном в BIND, nsd и, возможно, других) со звездочкой:
* IN A 198.51.100.3
http://someOtherHost/
или указан флаг [R]
.
- person Heinzi; 03.02.2010
Для тех, кто не знаком со всеми этими вещами A и CNAME, есть очень простое решение, которое работает с общим хостингом:
Просто зайдите в свою cpanel и добавьте субдомен с помощью *
Например, если ваш домен называется abc.com, вы можете добавить * и выбрать/ввести подкаталог в качестве корня к нему. Когда вы сохраните, он добавит *.abc.com в вашу таблицу поддоменов и добавит все необходимые записи A в ваш файл зоны.
Когда вы нажмете «любой».abc.com в своем браузере, сервер отправит вас в указанное место (подкаталог, который вы упомянули).
Кроме того, для обработки всех (любых) поддоменов для определенного перенаправления вы можете использовать .htaccess в этом подкаталоге для обработки всех входящих запросов поддоменов.
Рабочий пример .htaccess выглядит следующим образом:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(^.*)\.abc\.com
RewriteRule (.*) handler.php?user=%1&%{QUERY_STRING}
</IfModule>
handler.php (код ниже) просто отображает приветственное сообщение с именем поддомена и всей строкой запроса в URL:
$user = $_REQUEST["user"];
print_r($_REQUEST);
echo "Welcome {$user}";
Надеюсь это поможет.