Apache vhost ServerName ServerAlias wildcard
Le serveur sur lequel ce blog repose avait son VHOST par défaut[1] configuré de la manière suivante:
<VirtualHost *:80> ServerName default.tinad.fr Redirect 301 / http://www.tinad.fr/ </VirtualHost>
Tandisque le VHOST de ce blog par exermple est configuré ainsi:
<VirtualHost *:80> ServerName blog-du-grouik.tinad.fr DocumentRoot /var/www/blog-du-grouik.tinad.fr </VirtualHost>
Ça se traduit par: Si un navigateur interroge le serveur sans fournir un nom de domaine que j'ai prévu dans les vhost, il sera redirigé vers http://www.tinad.fr [2].
Depuis quelques jours, j'ai l'honneur de fournir un petit espace web au hackerspace jeannedhack.org. (juste le sous domaine www, le git et le wiki sont ailleurs)
Sauf que Jeanne est exigeante:
Il faut que sur le serveur
- redirige vers www.tinad.fr pour tout ce qui n'est pas prévu genre http://truc.tinad.fr ou encore directement avec l'IP http://88.191.74.45
- Sauf pour les sousdomaines de jeannedhack.org qui eux, s'ils ne sont pas prévus, ce sera un redirect vers http://www.jeannedhack.org
Il ne peut y avoir qu'un seul vhost default (logique), et il est déja utilisé. Le principe que j'ai retenu est de mettre une * (wildcard) dans la directive ServerName pour que le vhost prenne en compte tous les sous domaines... Non ça ne marche pas! Il faut utiliser la directive ServerAlias pour les wildcards.. Je ne modifie donc pas mon vhost default, mais j'en créée trois pour jeanne. Voici la configuration de configuration des virtualhost de jeannedhack.org:
<VirtualHost *:80> ServerName www.jeannedhack.org DocumentRoot /var/www/www.jeannedhack.org/jeannedhack.static </VirtualHost> <VirtualHost *:80> ServerName podcast.jeannedhack.org DocumentRoot /var/www/podcast.jeannedhack.org </VirtualHost> <VirtualHost *:80> ServerName jeannedhack.org ServerAlias *.jeannedhack.org Redirect 301 / http://www.jeannedhack.org </VirtualHost>
Apache les lit dans l'ordre, le premier vhost dont la directive ServerName ou ServerAlias correspond à la requete de l'utilisateur sera utilisé. C'est pour ça que le vhost avec la wildcard est en dernier. Voila, http://jeannedhack.org ainsi que http://trucMachinChoseSousDomaineNonPervu.jeannedhack.org sont redirigés vers http://www.jeannedhack.org