Как упоминалось в комментарии, вот ссылки на Apache, есть несколько способов сделать это: Динамически настраиваемый массовый виртуальный хостинг, Динамические массовые виртуальные хосты с mod_rewrite.
Самое простое решение, которое я нашел после нескольких тестов: один единственный <VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
DocumentRoot /www/example
<Directory />
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
с этим подстановочным знаком Псевдоним сервера
.
С .htaccess
содержащий
RewriteEngine включен
Правило перезаписи ^(.*)$ index.php [QSA,L]
затем мы можем выполнить всю маршрутизацию для каждого пользователя через PHP:
<?php
$host = $_SERVER['HTTP_HOST'];
$sname = $_SERVER['SERVER_NAME'];
// parse the subdomain of $host or $sname and deliver
// the content accordingly (using the database)
?>
Преимущество: это также работает, если конечный пользователь использует его собственный домен с DNS-записью CNAME. Пример:
www.userabc.com CNAME страница пользователя-userabc.example.com
Затем в PHP $хост
здесь будет показано www.userabc.com
. Если эта информация о личном домене находится где-то в базе данных, мы можем предоставить контент соответствующим образом, даже если пользователь использует личный домен.
Примечание: в случае, когда пользователи используют свой личный домен с CNAME, полезно определить, какой виртуальный хост по умолчанию использовать, когда запрос поступает с хостом, который не указан в списке. Имя сервера
директивы: Виртуальный хост Apache по умолчанию.