Gérer la redirection https avec WordPress

Ecran ordinateur code source

Après avoir ajouté un certificat SSL à votre nom de domaine pour votre site, chez votre hébergeur, c’est le moment de rediriger automatiquement les adresses URL non sécurisées vers des adresses sécurisées https.

Toutes les adresses que les visiteurs vont utiliser pour voir votre site seront automatiquement renvoyées et de façon permanente vers des adresses de page sécurisées. Voyons comment ajouter rapidement ces redirections.

Mettre en place la navigation sécurisée

Plutôt que de passer par un plugin tel que Really Simple SSL, voici un moyen simple et manuel pour forcer la redirection des pages de votre site par exemple http://monsite vers https://monsite.

Ajoutez un fichier .htaccess à la racine de votre site Web, s’il n’est pas déjà présent.

Dans ce fichier, placez les 4 lignes à partir de RewriteEngine On

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"

Le fichier .htaccess de base complet

# Réécriture et redirection des URI
# Résoudre contenu mixte4 lors de la migration vers HTTPS CSP Politique de sécurité des contenus.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"


# BEGIN WordPress
# Les directives (lignes) entre « BEGIN WordPress » et « END WordPress » sont générées
# dynamiquement, et doivent être modifiées uniquement via les filtres WordPress.
# Toute modification des directives situées entre ces marqueurs sera surchargée.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Explications techniques pour en savoir plus

Du protocole HTTP vous obligez un passage vers le protocole HTTPS. Le S signifie que la communication est sécurisée par chiffrage3 dans la barre d’adresse du navigateur à la place du HTTP.

Expliquons les directives pour forcer la redirection automatique ajoutées au début de votre fichier.

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

Ces directives indiquent que :

  1. Vous autorisez la réécriture d’URL
  2. Détection SSL conditionnelle : vous appliquez la réécriture des adresses à condition que les urls ne soient pas HTTPS.
  3. Vous réécrivez les urls selon une règle d’écriture utilisant des expressions régulières. Vous appliquez une redirection permanente 301 pour indiquer que l’ancienne URL n’est plus disponible à l’adresse indiquée à l’aide d’un drapeau de réécriture L last pour récupérer l’objet RESQUEST_URI, R redirect pour rediriger l’URL et NE No Escape pour convertir les caractères accentués et caractères spéciaux en hexadécimal.

Pour résoudre le contenu mixte, les adresses non sécurisées présentes dans le code source de vos pages, vous renseignez aussi la politique de sécurité des contenus (CSP) pour le navigateur. Ainsi le navigateur de l’internaute saura qu’il lui faut convertir toutes les ressources présentes dans votre code en adresses sécurisées.

Header always set Content-Security-Policy "upgrade-insecure-requests;"

Sécuriser la navigation des pages d’administration de WordPress

Dans votre fichier de configuration WordPress wp-config.php, définissez par la fonction intégrée en PHP define() une constante FORCE_SSL_ADMIN en lui attribuant une valeur true pour forcer le SSL pour les pages d’administration.

/* Forcer le SSL pour l'administration */

define('FORCE_SSL_ADMIN', true) ;

Vocabulaire employé

1 Certificat SSL : fichier de données qui protège en partie les échanges qui transitent entre le navigateur du visiteur et votre site Web. Il certifie que la connexion entre l’internaute et le site Web est sécurisée, que l’utilisateur se connecte au bon site Web. Techniquement, les échanges de données envoyées ou reçues sont chiffrées par un échange de clés de cryptage : les informations ne peuvent être décodées que par une clé. La personne qui essayera de les intercepter ne pourra rien en faire. Cela permet à l’utilisateur de vous envoyer des données sensibles en toute confiance : ses coordonnées, ses mots de passe, des informations bancaires. Le certificat est renouvelable tous les 397 jours au maximum.

2 Fichier .htaccess vs vhost : Si vous disposez d’un accès root SSH au serveur Linux sur lequel Apache fonctionne, la meilleure solution consiste à configurer la redirection dans le fichier de configuration de l’hôte virtuel du domaine. Sinon, vous pouvez configurer la redirection dans le fichier .htaccess du domaine. Le serveur Apache lit le fichier .htaccess à chaque demande de page, ce qui ralentit le serveur Web.

3Chiffrage vs cryptage : un message chiffré nécessite de connaître la clé pour le décoder, un message crypté peut être décodé sans clé.

4Contenu mixte : contenu mélangeant des liens avec le protocole https et le protocole http.

Retour en haut