Vérifier que la réécriture d’URL est fonctionnelle
Dans un premier temps, il est nécessaire d’avoir le mod_rewrite
d’activé. Il y a de grandes chances qu’il le soit déjà, mais on ne sait jamais. Pour s’en assurer, on lance la commande :
- sudo a2enmod rewrite
Le retour de la commande confirmera s’il est déjà activé, dans le cas contraire, il faudra redémarrer le serveur Apache avec la commande :
- /etc/init.d/apache2 restart
Renvoyer l’ensemble du site vers le protocole HTTPS sécurisé depuis le virtualhost
Renvoyer vers HTTPS est ensuite assez simple, il suffit de modifier le virtualhost en réécrivant toute connexion sur le port standard (80 en général) vers le protocol https.
Cela donnera quelque chose du genre pour le site technique.arscenic.org :
- <VirtualHost *:80>
- .....
- Redirect permanent / https://technique.arscenic.org/
- ....
- </VirtualHost>
Il faudra ensuite redémarrer le serveur apache via la commande :
- /etc/init.d/apache2 restart
Toute demande de connexion via http
sera maintenant redirigée vers https
Depuis le htaccess
Imaginons que le site soit un webmail et que le code de ce site puisse être utilisé depuis plusieurs urls / domaines différents (un webmail par exemple).
Il faut donc rediriger chaque domaine vers sa version https. Pour ce faire on peut modifier ou créer un fichier htaccess
à la racine du code du site et y ajouter les lignes suivantes :
- RewriteEngine On
- RewriteCond %{HTTPS} off
- RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
La première ligne active la réécriture d’URLs.
La seconde est une condition, elle vérifie que l’on ne se connecte pas déjà via HTTPS.
La troisième réécrit l’URL si la condition est validée et renvoie vers la même url sur le protocole HTTPS.