J'ai un serveur Apache qui servira quelques sites (tous à partir de la même adresse IP).
Le site A doit être accessible via HTTP et HTTPS.
Le site B doit niquement être accessible via HTTP - il n'est pas accessible via https.
Le site A fonctionne bien, mais le site B me pose problème. Lorsqu'un utilisateur tente d'accéder à https://SiteB
, il est redirigé vers https://SiteA
.
La configuration pour le site A ressemble à ceci:
# 001-SiteA.conf:
<VirtualHost *:80>
ServerName SiteA
ServerAlias SiteA
# ...
</VirtualHost>
# 001-SiteA-SSL.conf:
<VirtualHost *:443>
ServerName SiteA
ServerAlias SiteA
# ...
</VirtualHost>
# 002-SiteB.conf
<VirtualHost *:80>
ServerName SiteB
ServerAlias SiteB
# ...
</VirtualHost>
Ce que l’on préfère, c’est que l’utilisateur obtienne une erreur 404, une page vide ou quelque chose - mais définitivement not le contenu de SiteA.
Pourquoi https://SiteB
redirige-t-il les utilisateurs vers https://SiteA
et comment puis-je arrêter cela?
Le documentation Apache pour les hôtes virtuels basés sur le nom indique (l'accent est mis sur le leur):
Vhost basé sur le nom par défaut pour une combinaison IP/port
Si aucun nom de serveur ou nom de serveur correspondant ne figure dans l'ensemble des hôtes virtuels contenant la combinaison d'adresse/port IP la plus spécifique, alors le premier hôte virtuel répertorié qui correspondances qui seront utilisées.
Dans la mesure où aucun hôte virtuel n'a été défini pour siteB:443
, la valeur par défaut est siteA:443
car il s'agit du premier correspondant à l'adresse IP et au numéro de port.
Il y a deux façons de résoudre ce problème:
siteB:443
0000-default-site.conf
et 0000-default-site-ssl.conf
Je recommanderais la solution de site par défaut, sinon SiteA sera servi pour tout nom d'hôte aléatoire dirigé vers le serveur.