Краткое изложение
- Вам необходимо создать домен с подстановочными знаками на вашем DNS-сервере * .website.com
- Затем в вашем контейнере vhost вам нужно будет также указать подстановочный знак * .website.com - это делается в
ServerAlias
DOC
- Затем извлеките и проверьте субдомен в 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 Dynamically Configured Mass Virtual Hosting .
wildcard subdomains
, см. Мое решение для этого в.htaccess
.