După cum s-a menționat într-un comentariu, aici sunt referințe pentru Apache, există mai multe moduri de a face acest lucru: Găzduire virtuală în masă configurată dinamic, Gazde virtuale de masă dinamice cu mod_rewrite.
Cea mai simplă soluție pe care am găsit-o după alte câteva teste este: una singură <VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
DocumentRoot /www/example
<Directory />
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
cu acest wildcard ServerAlias
.
Cu un .htaccess
conținând
RewriteEngine activat
RewriteRule ^(.*)$ index.php [QSA,L]
apoi putem face toată rutarea pentru fiecare utilizator prin 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)
?>
Beneficiu: funcționează și dacă utilizatorul final folosește propriul său domeniu personalizat cu o înregistrare CNAME DNS. Exemplu:
www.userabc.com CNAME userpage-userabc.example.com
Apoi, în PHP, $gazdă
va arata aici www.userabc.com
. Dacă aceste informații de domeniu personalizate se află undeva în baza de date, putem difuza conținutul în consecință, chiar dacă utilizatorul folosește un domeniu personalizat.
Notă: în cazul în care utilizatorii își folosesc domeniul personalizat cu CNAME, acest lucru este util pentru a determina care este VirtualHost implicit de utilizat atunci când o solicitare vine cu o gazdă care nu este listată în Numele serverului
directive: VirtualHost implicit Apache.