Вы можете сделать это частично с файлами .htaccess, но некоторые настройки должны быть выполнены на уровне httpd.conf. По сути, это выглядело так:
a) Настройте свой домен, чтобы иметь подстановочные знаки DNS для зоны. Точная информация о том, как это сделать, зависит от того, кто является вашим DNS-провайдером или какое программное обеспечение BIND вы используете. Но в основном все настраивается так, чтобы * .example.com указывал на адрес вашего сервера.
б) Настройте веб-сервер следующим образом:
<VirtualHost x.x.x.x:80>
ServerName *.example.com
...
</VirtualHost>
<VirtualHost x.x.x.x:80>
Server some.fixed.subdomain.example.com
...
</VirtualHost>
Убедитесь, что вы перечислили любые нединамические домены ПОСЛЕ подстановочного знака, иначе, скорее всего, ничего не получится Apache довольно требователен к порядку, в котором он установлен.
При такой настройке нет необходимости переписывать запросы в запрос. Вы можете сделать так, чтобы ваши скрипты проверяли $_SERVER['HTTP_HOST']
, чтобы выяснить, какой виртуальный поддомен обслуживается, и работать оттуда.