web-dev-qa-db-fra.com

Avec plusieurs sites sur le même serveur et des règles différentes pour HTTP / HTTPS, un site non sécurisé est redirigé vers un autre site sécurisé.

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:

  1. Créer un hôte virtuel pour siteB:443
  2. Créez des hôtes virtuels pour gérer des noms d'hôtes inconnus. Demandez-leur de retourner les codes d'erreur. Demandez-leur de figurer en premier dans la liste en nommant les fichiers de configuration tels que 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.

1