Создание поддоменов на лету - PullRequest
9 голосов
/ 03 февраля 2010

Когда кто-то подписывается на Blogger или WordPress, он получает свой собственный поддомен, который работает мгновенно. Как мне добиться того же, если у меня есть собственный VPS / VDS / выделенный сервер?

Ответы [ 2 ]

10 голосов
/ 03 февраля 2010

В двух словах:

  1. Создайте домен подстановочного знака в DNS (т. Е. При разрешении what.yourdomain.example возвращается ваш IP),
  2. создайте виртуальный хост по умолчанию на вашем веб-сервере и
  3. проверьте URL в вашем приложении.

Как это сделать, зависит от того, какую технологию вы используете. Позвольте привести несколько примеров:

  1. Как настроить подстановочный домен в BIND и в Windows Server DNS .
  2. Чтобы создать виртуальный хост по умолчанию, вам просто нужно создать веб-сервер без записи хоста в IIS. В Apache первый виртуальный хост, указанный в файле конфигурации, становится хостом по умолчанию.
  3. Здесь вы можете (а) переписать URL в зависимости от домена (то есть преобразовать поддомен в параметр в URL, пример для ASP.NET , примеры для Apache с mod_rewrite: Link1 , Link2 ) или (b) просто посмотрите на часть URL узла (например, Request.Url в ASP.NET).

Добавление bortzmeyer (извините за перезапись вашего редактирования, произошел конфликт редактирования):

Синтаксис для подстановочного знака в обычном формате файла зоны DNS (описан в RFC 1035 и реализован в BIND, nsd и может быть другим) со звездочкой:

 *   IN    A   198.51.100.3
2 голосов
/ 03 декабря 2012

Для тех, кто является мирянами для всего этого A и CNAME, есть очень простое решение, работающее с Shared Hosting:

Просто зайдите на свою cpanel и добавьте поддомен с *

Например, если ваш домен называется abc.com, вы можете добавить * и выбрать / ввести подкаталог в качестве корневого каталога для этого.Когда вы сохраните файл, он добавит * .abc.com в вашу таблицу поддоменов и добавит все необходимые записи A в ваш файл зоны.

Когда вы нажимаете «any» .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}";

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...