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:

tweet-jeanne-conf-apache.jpeg

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

Notes

[1] Pour qu'il soit par défaut, il suffit que le nom du fichier (ou du lien) soit le premier par ordre alphabétique dans /etc/apache2/sites-enabled

[2] évidemment un vhost est prévu pour www.tinad.fr. Le redirect 301 permet d'éviter que google considère que c'est du "Duplicate content"

Page top