Dans /etc/Apache2/sites-available/example.com
:
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /var/www/example.com/htdocs
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
J'ai également un hôte virtuel configuré pour foo.example.com
, mais qui n'écoute que sur le port 80.
J'ai l'enregistrement A pour foo.example.com pointant sur ce même serveur. Si je visite https://foo.example.com
dans mon navigateur, il charge l'hôte virtuel pour www.example.com
. Comment puis-je combattre cela?
Cela est dû au fait que vous n'avez pas configuré SSL pour le sous-domaine foo.example.com
et qu'il utilise donc le domaine www.
. Si vous ne souhaitez pas utiliser SSL, vous pouvez simplement supprimer l'hôte virtuel qui s'exécute sur le port 443, sinon, ajoutez simplement à la configuration les éléments suivants:
Permet à foo.example.com
de fonctionner sur SSL
<VirtualHost *:443>
ServerName foo.example.com
DocumentRoot /var/www/foo.example.com/htdocs
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
Rediriger HTTPS vers HTTP
<VirtualHost *:443>
ServerName foo.example.com
RewriteEngine on
RewriteCond %{HTTP_Host} ^foo.example.com
RewriteRule ^/(.*)$ http://foo.example.com/$1 [L,R=301]
DocumentRoot /var/www/foo.example.com/htdocs
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
Ou si vous voulez une erreur 404 utilisez alors:
<VirtualHost *:443>
ServerName foo.example.com
RewriteEngine on
Redirect 404 /
ErrorDocument 404 "Page Not Found"
DocumentRoot /var/www/foo.example.com/htdocs
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>