I. Présentation
Dans ce tutoriel, nous allons voir comment configurer une redirection HTTP vers HTTPS pour votre site Internet hébergé sur un serveur Apache.
Lorsque l’on configure un site sous Apache, soit l’on utilise un fichier de configuration, soit l’on utilise un fichier .htaccess, mais on peut aussi mixer les deux. Sur un hébergement mutualisé basique où l’on va héberger un site, nous n’avons pas accès directement à la configuration d’Apache, ce qui nécessite d’utiliser un fichier « .htaccess » à la racine du site pour apporter des modifications sur la configuration.
Pour rediriger automatiquement les flux HTTP vers HTTPS avec Apache, il va falloir réécrire les URL pour que « http » devienne « https » dans le but d’avoir une connexion sécurisée. Même si votre site est accessible en HTTP et en HTTPS, il est préférable de rediriger tout le trafic vers une connexion HTTPS.
L’utilisation du fichier .htaccess pour déclarer des règles de réécriture est une pratique
II. Redirection HTTP vers HTTPS avec .htaccess
Je vous invite à vous connecter en SSH sur votre serveur dans le but de créer un fichier .htaccess à la racine du site. Si vous avez déjà ce fichier, vous pouvez simplement l’éditer.
Je pars du principe que la racine de mon site est :
/var/www/html/
Pour créer le fichier et l’éditer à l’aide de nano, cela donne :
nano /var/www/html/.htaccess
Ensuite, dans ce fichier il va falloir ajouter quelques lignes :
RewriteEngine On RewriteCond %SERVER_PORT 80 RewriteRule .* https://%HTTP_HOST%REQUEST_URI (R=301,L)
La règle « RewriteEngine On » permet d’activer le module de réécriture d’URL d’Apache, c’est-à-dire mod_rewrite. Ensuite, on crée notre condition avec « RewriteCond » qui va déclencher la règle « RewriteRule » dans le cas où cela correspond. En fait, la règle va se déclencher si le client se connecte à notre site en utilisant le port 80, correspondant au http. Si vous utilisez un autre port que le 80, il faudra remplacer la valeur « 80 » par votre port.
Dans ce cas, on réécrit l’URL : on conserve la même URL complète, mais on utilise le préfixe « https://« . En complément, le fait d’indiquer « R=301 » précise qu’il s’agit d’une redirection permanente : une bonne pratique et une information importante à donner aux moteurs de recherche.
Il y a une autre façon de faire et qui est l’occasion aussi d’ajouter « www » avant le nom de votre domaine, si vous le souhaitez ! Ce qui est important c’est de ne pas utiliser les deux (avec ou sans « www »). Si vous utilisez le bloc ci-dessous, modifiez le nom de domaine.
RewriteEngine On
RewriteCond %SERVER_PORT 80
RewriteRule ^(.*)$ https://www.tuto.cm/$1 (R=301,L)
Ces règles doivent fonctionner dans la majorité des cas, mais je n’irais pas jusqu’à dire dans tous les cas. Si c’est sur votre propre serveur, ça devrait aller, mais parfois en fonction des hébergeurs il peut y avoir des restrictions.
Imaginons qu’il y ait un souci et que la règle ne fonctionne pas, essayez de remplacer « RewriteCond %SERVER_PORT 80 » par la règle suivante :
RewriteCond %HTTPS !=on
Il y a également une autre alternative possible, ou disons une écriture différente :
RewriteCond %HTTPS off
III. Redirection HTTP vers HTTPS via le VirtualHost
Petit bonus, pour rediriger les flux HTTP vers HTTPS en modifiant directement la configuration d’Apache, c’est-à-dire la configuration de votre VirtualHost, il suffit d’indiquer cette règle :
Redirect permanent / https://www.tuto.cm/
Bien sûr, modifiez avec votre nom de domaine 😉. Même si c’est possible, il n’est pas nécessaire d’utiliser RewriteCond et RewriteRule dans ce cas.
Hébergez votre site à partir de 2$ sur 👉👉👉 https://www.tnctech.ca