Marre de déclarer votre sous domaine dans Bind et de créer un virtualhost pour chaque sous-domaine ? Voici la solution pour que le dossier toto placer au bon endroit vous donne toto.domaine.tld...
Dans votre configuration Bind, il vous faut une ligne :
* IN A xxx.xxx.xxx.xxx
où xxx.xxx.xxx.xxx est l’ip de votre serveur.
L’étoile permet ainsi de dire que tout url en *.domaine.tld est gérée par le serveur.
Par contre, pour les sous-domaines techniques utilisés pour la déclaration des serveurs NS ou MX, il est recommandé de les déclarer explicitement. La gestion automatique n’empêche pas la déclaration de certains sous-domaines.
Vous obtenez ainsi qqc du genre :
$ttl 38400 domaine.tld. IN SOA ns1.domaine.tld. tech.domaine.tld. (
2006082301
10800
3600
604800
38400 )
domaine.tld. IN NS ns1.domaine.tld.
domaine.tld. IN NS ns2.domaine.tld.
domaine.tld. IN MX 10 mail.domaine.tld.
www IN A xxx.xxx.xxx.xxx
mail IN A xxx.xxx.xxx.xxx
dns IN A xxx.xxx.xxx.xxx
IN A xxx.xxx.xxx.xxx
* IN A xxx.xxx.xxx.xxx
Note : dans webmin, il est interdit par défaut d’utiliser des wildcard (les fameuses “*”). Il faut aller dans la configuration du module pour l’autoriser...
Il vous faut installer le module vhost_alias :
Note : j’utilise Apache2, pour Apache 1.x il vous faudra vous référencer à la doc adéquat.
a2enmod vhost_alias /etc/init.d/apache2 reload
Il vous reste ensuite à ajouter une directive VirtualDocumentRoot et ServerAlias dans la configuration de votre VirtualHost comme dans l’ex suivant :
<VirtualHost xxx.xxx.xxx.xxx:80>
DocumentRoot /home/web/domaine.tld/www
ServerName domaine.tld
ServerAlias \*.domaine.tld
VirtualDocumentRoot /home/web/domaine.tld/%1
CustomLog /var/log/apache2/domaine.tld/access.log combined
ErrorLog /var/log/apache2/domaine.tld/error.log
</VirtualHost>
Relancez apache :
/etc/init.d/apache2 reload
et le tour est joué.
Ainsi, si j’ajoute un répertoire “toto” dans /home/web/domaine.tld/ alors automatiquement http://toto.domaine.tld est disponible.
Pour que http://domaine.com ne vous renvoie pas une erreur 404, car apache cherche alors /home/web/domaine.com/domaine qui n’existe pas, il vous faut faire la manipulation suivante :
ln -s /home/web/domaine.tld/www /home/web/domaine.tld/domaine
Magique, non ?