Après avoir ajouté un sous-domaine dédié aux images, j’ai remarqué qu’en appelant le domaine nu, par exemple skyminds.net sans www, je tombais sur une erreur 403 Forbidden.
Pourtant, jusque-là, le domaine sans www avait toujours été redirigé vers www.skyminds.net.
En analysant les logs Apache, je me suis rendu compte que le domaine nu ne tombait plus sur le bon virtual host. Apache servait le contenu d’un sous-domaine dédié aux ressources statiques. Or ce sous-domaine ne contenait que des images et n’était pas prévu pour afficher une page d’accueil. Résultat : erreur 403.
Le problème venait tout simplement d’une configuration incomplète du virtual host principal.
Comprendre le problème : Apache choisit un virtual host
Sur un serveur Apache qui héberge plusieurs domaines ou sous-domaines sur la même adresse IP, Apache utilise les virtual hosts pour décider quel site doit répondre à une requête.
Le navigateur envoie un header Host, par exemple :
Host: skyminds.netLangage du code : CSS (css)
Apache cherche alors un virtual host dont le ServerName ou le ServerAlias correspond à ce nom.
Si aucun virtual host ne correspond, Apache utilise le premier virtual host chargé pour cette adresse IP et ce port. La documentation Apache explique justement que si aucune correspondance plus spécifique n’est trouvée, le premier virtual host listé devient le serveur par défaut pour cette paire IP/port.
C’est là que les choses deviennent amusantes, au sens “Apache vient de servir le mauvais site avec beaucoup de sérieux”.