Rediriger les requêtes HTTP vers HTTPS, avec ou sans changement des ports par défaut d'Apache

Introduction

Facile !
Il existe plein de façons de faire une redirection HTTP → HTTPS :

Mais pour l'instant, allons au plus simple : la directive Redirect.
(Savoir utiliser mod_proxy ou mod_rewrite reste utile, mais ce sera pour plus tard !)


Préparer votre site HTTPS

Avant de parler de redirection, vous devez déjà avoir un site fonctionnel en HTTPS, avec :


Créer le vhost de redirection

Pour rediriger le trafic HTTP vers HTTPS, il suffit de créer un nouvel hôte virtuel (vhost) dédié à la redirection (ou bien d'ajouter le bloc dans votre vhost existant).

Exemple minimal :

<VirtualHost IP:PORTHTTP>
ServerName NOM-DU-SITE
Redirect permanent / https://NOM-DU-SITE:PORTHTTPS/
</VirtualHost>

À adapter selon votre cas :

<VirtualHost 192.168.1.200:80>
ServerName monsite.local
Redirect permanent / https://monsite.local:443/
</VirtualHost>

Si votre site écoute sur 150.0.0.200:8081 :

<VirtualHost 150.0.0.200:8081>
ServerName monsite.local
Redirect permanent / https://monsite.local:8443/
</VirtualHost>

A retenir :


Vérifiez les ports d'écoute d'Apache

Par défaut, Apache écoute uniquement sur 80 (HTTP) et 443 (HTTPS).
Si vous utilisez d'autres ports (ex. 8081, 8443...), il faut l'indiquer explicitement.

Éditez le fichier :

/etc/apache2/ports.conf

Ajoutez (ou modifiez) les directives Listen :

Listen 8081
Listen 8443

Mieux vaut ajouter des ports plutôt que remplacer les 80/443, pour garder la compatibilité avec les réglages par défaut.


Redémarrez Apache

Avant de relancer Apache, testez toujours votre configuration :

apache2ctl configtest

(sous certaines distributions, la commande est apachectl -t)

Puis rechargez le service :

systemctl reload apache2

⬆️ Retour en haut de la page