Migrer un WordPress en HTTPS…
Attention: cet article date du 25 janvier 2018
Ce qu'il contient est peut être encore valable...
... ou complètement obsolète!
Le protocole HTTPS étant devenu une quasi obligation, il m’a paru utile de faire un petit tuto des étapes à effectuer pour migrer un site existant (sous WordPress) d’une version HTTP à une version HTTPS…
Pour ce faire, rien de mieux qu’un cas pratique que nous allons suivre étape par étape.
Et donc, le site http://www.richardcarlier.com
va devenir, au fil de votre lecture https://richardcarlier.com
. J’en profite pour supprimer le www qui ne sert, quand on y pense, pas à grand chose…
Préambule
A partir de janvier 2017, Google a annoncé qu’il commencera à marquer comme non sécurisé les sites qui n’utilisent pas le protocole HTTPS. Ce qui se traduit par des dégradations dans le référencement des sites, et des alertes dans les navigateurs…
Si la motivation est théoriquement bonne (sécuriser le web), la conséquence est que les propriétaires de site(s) se doivent de migrer leur(s) site(s) actuel(s). Donc de passer du temps, voir dépenser quelques euros pour le faire.
Comme c’est pour notre bien (ou, disons, que nous ne pourrons pas y couper), allons-y…
Ajoutons que certains aspects de cette procédure sont techniques, lisez bien tout (surtout le court passage sur les sauvegardes), et assurez vous d’avoir tout compris avant de vous lancer…
Présence d’un certificat HTTPS
Pour obtenir un certificat HTTPS, vous avez le choix:
- certificat DV (domain validation): prouver que vous êtes propriétaire du domaine
- certificat OV (organization validation): idem, mais prouver que votre entreprise ou organisation existe réellement (avec documents officiels)
- certificat EV (extended validation): idem, mais en plus le nom s’affiche en vert dans la barre d’adresse du navigateur
Si le certificat EV est le meilleur, il est plus cher (99,99 € HT/an chez OVH par exemple) mais indispensable si vous faites du e-commerce. Le OV ne sera qu’à 49,99 € HT/an (toujours chez OVH) peut se justifier pour une société.
Par contre, si vous n’avez qu’un blog perso, ou pas les moyens (car il faut bien sûr multiplier cette somme pour chaque site que vous possédez), le DV est un bon choix (il est souvent gratuit, à condition d’avoir un hébergeur qui supporte le Let’s Encrypt). Solution gratuite, certes, mais il faut penser à l’activer (sinon, rapprochez vous de votre hébergeur)
Pour la suite de ce tuto, nous supposons que vous avez un certificat HTTPS actif.
Important: sauvegardes !
Quelques manipulations vont agir en profondeur dans votre WordPress, et modifier la base de données.
Avant de commencer, faire des sauvegardes est crucial.
Il est également intéressant de faire un petit nettoyage du site, pour accélérer les traitements (à faire avant la sauvegarde, tant qu’à faire), par exemple vider les corbeilles…
Ménage, optimisation: wp-optimize
A faire de temps à autre…
Faire des sauvegardes, toujours utile updraftplus
On peut aussi planifier les sauvegardes à intervalle régulier…
Rediriger le site en https
Le premier fichier a modifier est le fichier .htaccess
, qui va donner des directives à Apache (le serveur web).
Nous allons effectuer deux changements (le deuxième étant facultatif):
- lui dire que si un visiteur arrive en http, nous allons le rediriger en https (et indiquer dans la foulée que ces redirections sont permanentes).
- et lui dire aussi que s’il arrive sur http://www (ou https://www) nous allons l’envoyer en https:// sans les www
Ajoutons donc ces quelques lignes:
# Redirection vers HTTPS RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTPS} =off RewriteRule ^(.*)$ https://richardcarlier.com/$1 [R=301,L] # Redirection du www vers non-www en HTTPS RewriteCond %{HTTP_HOST} ^www\.richardcarlier\.com [NC] RewriteRule ^(.*)$ https://richardcarlier.com/$1 [R=301,L]
Remplacez bien sûr le nom richardcarlier par votre domaine, et le .com par votre extension…
ATTENTION: à ce stade, le WordPress risque de ne pas se comporter correctement (provisoirement – il est possible d’attendre la fin de l’étape suivante pour mettre en ligne ce fichier).
Modifier la base de données
Dans la base de données, il est fait référence à de nombreux endroits à l’adresse de votre site (les options de WordPress, les permaliens, les liens internes…) qui, toutes, pointent vers la version http.
La première option consiste à aller dans le menu Réglage > Général, et à modifier l’adresse du site.
Mais cette solution peut ne pas suffire. Si c’est le cas, il faudra parcourir toutes les tables de la base pour changer partout… Travail, disons le, impossible sans outil adhoc. Mon conseil, passez directement par l’outil en question.
Le plus simple et efficace que j’ai trouvé, se nomme sobrement Database Search and Replace Script in PHP…
Attention, ce script est dangereux si vous l’utilisez mal. Vous constaterez d’ailleurs que vous ne pourrez le télécharger qu’après avoir coché les cases prouvant que vous avez connaissance de ce danger (relatif, si vous avez fait vos sauvegardes).
Bref: une fois téléchargé, copié dans un dossier secret à la racine de votre site (disons, NoMoreSecret dans notre cas) les trois fichiers index.php, srdb.class.php et srdb.cli.php
Et rendez vous ensuite à l’adresse secrète
http://www.richardcarlier.com/NoMoreSecret/
Face à l’écran, vous n’aurez qu’à remplir les deux premiers champs.
Dans le premier (replace) mettez l’url de votre site avant, sans / à la fin
http://www.richardcarlier.com
Dans le second (with) le site après, sans / à la fin
https://richardcarlier.com
Si vous avez plusieurs sites sur la même base de données, faites « select Tables » et sélectionner toutes les tables qui commencent par votre préfixe de tables (voir le fichier wp-config.php en cas de doute)
Nous faisons ensuite dry run, pour voir si cela se comporte normalement (on le fait pour de faux).
Et si oui, live run pour tout remplacer dans votre base de données (là, c’est fait…).
Ne reste plus qu’à supprimer le dossier NoMoreSecret…
Et après
A priori, à ce stade, votre site est devenu sécurisé, avec un joli cadenas vert.
Il est possible cependant que cela nécessite quelques réglages supplémentaires:
- Forcer l’admin à être en SSL si nécessaire (en théorie c’est le cas, mais n’hésitez pas à ajouter cette ligne dans le fichier wp-config.php)
define('FORCE_SSL_ADMIN', true);
- Si votre thème est plus ou moins mal fait, il se peut qu’il utilise des CDN qui pointent vers des fichiers en http://, modifiez le pour que ceux-ci pointent vers du https:// (rapprochez vous du créateur du thème si besoin)
- Si vous avez un fichier robots.txt, modifiez le éventuellement pour y glisser du https
- Si vous utilisez des outils comme Google Search Console, Google Analytics, ou tout autres services de référencement/statistiques faites-y les réglages éventuels (remplacez http par https…)
D’autres méthodes existent, de plus en plus faciles à trouver sur Google. Notons:
-
- movingtohttps.com qui vous donnera (en anglais) de nombreuses pistes, selon que vous soyez sur WordPress, Magento, Drupal
- Bruno Tritsch : Passer son WordPress en HTTPS en quelques clics avec Really Simple SSL (passe par un plugin)
- Marlène, de No Tuxedo: Comment passer son blog WordPress en HTTPS sans tout casser ? (passe par un plugin)
- Et aussi WP Marmite, WP Formation…
Conclusion
Et bien sûr, pour votre prochain WordPress, pensez à le mettre en HTTPS… dès l’installation!
Personnellement, comme Bruno Tritsch, je suis passé par le plugin Really Simple SSL qui porte très bien son nom : simple, rapide, nickel !