Быстрое краткое изложение
- Вам необходимо создать подстановочный домен на вашем DNS-сервере * .website.com
- Тогда в вашем vhost-контейнере вам также потребуется указать подстановочный знак * .website.com - Это делается в
ServerAlias
DOCs
- Затем извлеките и проверьте поддомен в PHP и отобразите соответствующие данные
Длинная версия
1. Создайте DNS-запись с подстановочными знаками
В настройках DNS вам необходимо создать запись домена с подстановочными знаками , например *.example.org
. Подстановочный знак выглядит следующим образом:
*.example.org. 3600 A 127.0.0.1
2. Включить подстановочный знак в vhost
Далее в конфигурации Apache вам необходимо настроить контейнер vhost, который задает подстановочный знак в директиве ServerAlias
DOCs . Пример контейнера vhost:
<VirtualHost *:80>
ServerName server.example.org
ServerAlias *.example.org
UseCanonicalName Off
</VirtualHost>
3. Определите, на каком поддомене вы находитесь в PHP
Затем в ваших PHP-скриптах вы можете найти домен, посмотрев в суперглобальную переменную $_SERVER
. Вот пример захвата субдомена в PHP:
preg_match('/([^.]+)\.example\.org/', $_SERVER['SERVER_NAME'], $matches);
if(isset($matches[1])) {
$subdomain = $matches[1];
}
Я использовал здесь регулярное выражение, чтобы позволить людям заходить на ваш сайт через www.subdomain.example.org или subdomain.example.org.
Если вы никогда не предполагали иметь дело с www. (или другие субдомены), тогда вы можете просто использовать подстроку так:
$subdomain = substr(
$_SERVER['SERVER_NAME'], 0,
strpos($_SERVER['SERVER_NAME'], '.')
);
Массовый виртуальный хостинг
Массовый виртуальный хостинг - это схема, немного отличающаяся от приведенной выше, в которой вы обычно используете его для размещения множества отдельных веб-сайтов, а не пытаетесь использовать его для запуска приложения, как предлагает вопрос.
Я уже задокументировал свою среду массового виртуального хостинга на основе mod_rewrite в посте в моем блоге , который вы можете посмотреть, если вы выберете такой путь. Существует также, конечно, соответствующая страница руководства Apache .
Apache также имеет внутренний способ работы с массовым виртуальным хостингом, который немного менее гибок, чем метод mod_rewrite, который я использовал. Все это описано на странице руководства Apache Динамически настраиваемый массовый виртуальный хостинг .