Apache: désactiver la redirection vers vhost par défaut sur un nom de serveur incompatible

J’ai de nombreux services fonctionnant sur la même machine, l’un d’entre eux utilisant SSL, disons “c3po.com”. L’URL de mes serveurs est https://c3po.com , http://r2d2.com et http://jarjar.com .

Le problème est que si je tape https://r2d2.com apache me redirige vers https://c3po.com , sans même changer l’URL. En d’autres termes, je verrai le service c3po, avec mon navigateur affichant http://r2d2.com .

Je comprends que quand Apache ne peut pas correspondre exactement à un vhost, il utilise le premier chargé correspondant à ip: port, comme il n’y en a pas:

  ServerName r2d2.com ... 

Il ramassera le seul vhost sur: 443 trouvé, qui est:

  ServerName c3po.com ... 

Ce que je veux vraiment, c’est que lorsque l’utilisateur tape https://r2d2.com ou https://jarjar.com une page d’erreur s’affiche, car ces services (avec SSL activé sur http) n’existent tout simplement pas! Comment puis-je y arriver?

Regarde ça

NameVirtualHost *: 443

est activé dans votre configuration principale. Ensuite, créez un VirtualHost qui écoute sur le port 443 avec votre page d’erreur et créez un autre VirtualHost avec la configuration de c3po.com. Si un utilisateur résout le nom de l’adresse IP de votre serveur (ce qui sera le cas pour tous les sites), il se rendra sur le site par défaut, sauf s’il se connecte à c3po.

Quelque chose dans le sens de ce qui suit devrait fonctionner:

Défaut:

  ServerName _default_https DocumentRoot /path/to/error/page  ...   

c3po:

  ServerName c3po.com ServerAlias www.c3po.com DocumentRoot /path/to/c3po  ...