Pour gérer les différents sites web hébergés, AlternC utilise le module Apache mod_vhost_alias
, configuré avec la règle suivante :
VirtualDocumentRoot /var/alternc/dns/%-2.1/%0
%-2.1/%0
signifie : prendre le premier caractère de l’avant-dernier membre du nom de domaine, suivi du nom de domaine lui-même. Ainsi le domaine null.rezo.net
sera recherché à l’emplacement /var/alternc/dns/r/null.rezo.net
.
Lorsqu’on se rend sur un domaine que le DNS fait pointer vers notre serveur, mais qui n’est pas encore configuré du côté de l’admin AlternC, cet emplacement n’existe pas, et Apache renvoie une bonne vieille erreur 404.
Notre but ici est de différencier deux types d’erreur 404 :
domaine non installé (le cas décrit ci-dessus)
fichier absent dans un domaine installé (le cas « classique »)
Pour cela je procède comme suit : dans /etc/apache/httpd.conf
j’ajoute un contrôleur d’erreur 404 à l’URI /http_errors/404.php
et un alias de /http_errors/
vers /var/alternc/http_errors/
. Ce sont les deux dernières lignes de ce bloc :
<VirtualHost $IP$:80>
# ***ALTERNC_ALIASES***
# ***MAILMAN***
Alias /marchives/ /var/lib/mailman/archives/public/
Alias /mimages/ /usr/share/images/mailman/
alias /admin/sql /usr/share/phpmyadmin
alias /webmail /usr/share/squirrelmail
Alias /icons/ /usr/share/apache/icons/
UseCanonicalName Off
VirtualDocumentRoot /var/alternc/dns/%-2.1/%0
Alias /http_errors/ /var/alternc/http_errors/
ErrorDocument 404 /http_errors/404.php
</VirtualHost>
Dans le répertoire (à créer) /var/alternc/http_errors/
j’installe un script 404.php
avec le code suivant :
On relance Apache. Et voilà.
1 Message