Prérequis : Avoir un certificat SSL installé sur son hébergement
Vous venez de créer votre site mais celui-ci est toujours affichable en http, découvrez dans cet article de Wp Smart comment forcer la redirection de votre site de http vers https.
Dans cet article je vous proposerai 2 solutions, une avec plugin et une sans. C’est parti, sécurisons notre site !
Dans le cas où votre site est déjà existant, par soucis de simplicité, je vous invite à utiliser Really simple SSL. Passer par le .htaccess dans le cas d’un site existant vous obligera à éditer les liens en base de données et cela risque d’être compliqué (je vous l’explique tout de même plus bas dans l’article).
Attention : le .htaccess est un fichier de configuration serveur, il est par nature sensible et avec une fausse manipulation votre site sera down. Il vous faut donc télécharger une copie avant toute intervention. En cas de problème il vous suffira de remettre l’ancienne version.
Pour pouvoir forcer notre site à s’afficher en https et non en http nous pouvons passer par le .htaccess dans votre éditeur de code. Pour cela nous allons devoir ajouter dans ce fichier de configurations les redirections que nous souhaitons. Dans les 2 codes ci-dessous on force le site à s’afficher en https dans tous les cas.
Attention à bien mettre ce code au dessus des lignes de base de WordPress
Url souhaitée sans www ex : https//monsupersite.fr
http://monsupersite.fr -> Redirigera vers -> https//monsupersite.fr
http://www.monsupersite.fr -> Redirigera vers -> https://monsupersite.fr
https://www.monsupersite.fr -> Redirigera vers -> https://monsupersite.fr
# Redirection vers HTTPS
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://monsite.com/$1 [R=301,L]
# Redirection du www vers non-www en HTTPS
RewriteCond %{HTTP_HOST} ^www\.monsite\.com [NC]
RewriteRule ^(.*)$ https://monsite.com/$1 [R=301,L]
En gras les éléments à modifier
Url souhaitée avec www ex : https//www.monsupersite.fr
http://www.monsupersite.fr -> Redirigera vers -> https//www.monsupersite.fr
http://monsupersite.fr -> Redirigera vers -> https://www.monsupersite.fr
https://monsupersite.fr -> Redirigera vers -> https://www.monsupersite.fr
# Redirection vers HTTPS
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://www.monsite.com/$1 [R=301,L]
# Redirection du non-www vers www en HTTPS
RewriteCond %{HTTP_HOST} ^monsite.com [NC]
RewriteRule ^(.*)$ https://www.monsite.com/$1 [R=301,L]
En gras les éléments à modifier
Avec Really Simple SSL rien de plus simple, installer l’extension, l’activer et cliquer sur le bouton :
Go ahead activate ssl ou Activer SSL
Dans les réglages vous pouvez ensuite vérifier que ces options sont bien cochées :
Cela vous permettra de ne pas avoir de contenu mixed (voir plus bas) mais aussi de s’assurer que les redirections sont bien en place.
Vous pouvez ensuite désactiver/supprimer le plugin et en garder tous les bénéfices. (non obligatoire, vous pouvez garder l'extension active)
Bravo, maintenant que nous avons forcé votre site à s’afficher en https, je vous invite tout de même à vérifier les 3 redirections.
Si vous avez choisi l’option sans plugin mais que votre site n’est pas neuf, il va falloir remplacer toutes les urls en base de données restées en http:// pour ne pas avoir de Mixed content.
Le Mixed content est le fait d’appeler des items : pages, catégories, images, fichiers, favicon, scripts, etc en http sur un site en https. Les navigateurs n’aiment pas ça et n’afficheront/ne chargerons donc pas vos éléments ou pire, afficherons une jolie page de “Site non sécurisé” faisant immédiatement fuir vos utilisateurs.
Pour éviter cela, je vous invite à utiliser Search and replace DB, une fois téléchargée, il vous faudra :
Normalement cette étape est inutile, car si vous avez correctement suivi mon tutoriel le site n’est plus accessible en http://. Cependant si vous prenez mon tutoriel en cours de route voici un bout de code à ajouter à votre wp-config.php (avant /* That's all, stop editing! Happy blogging. */) afin d’afficher obligatoirement votre administration en https
// Forcer le HTTPS dans l'administration
define('FORCE_SSL_ADMIN', true);
Une fois le https mis est en place sur un site déjà existant, il va falloir reconfigurer certains éléments :