Sélectionner une page

Dans un article précédent, je vous ai montré comment basculer votre site https sans avoir recours à un plugin supplémentaire.
Suite à ce basculement votre site est désormais accessible par défaut en https.
Toutefois, rien n’empêche un utilisateur d’y accéder en non sécurisé. Pour cela, il lui suffit de saisir explicitement l’adresse de votre site en omettant le “s” : http://votre-site.com au lieu de https://votre-site.com.
Voyons comment forcer les connexions en https et déjouer la tentative de cet utilisateur.

Avant d’aller plus loin, commencez par vérifier si votre site est concerné : il se peut qu’un tiers (votre hébergeur ou un prestataire) ait déjà configuré votre site en conséquence lors de l’installation du certificat ssl.

Vérifier si le https est déjà forcé

Pour vérifier si votre serveur force ou non l’accès en https, saisissez l’url de votre site dans la barre d’adresse du navigateur et ajoutez “/?” :

https://reskator.fr/?

remplacez “reskator.fr” par le nom et l’extension de votre site.

L’ajout de /? nous permet de contourner la fonctions d’historique/cache du navigateur. Celui-ci ayant trop souvent tendance à “corriger” de lui-même la saisie avec ce qu’il a en mémoire…).

Si la page s’affiche sans le cadenas, si l’url n’a pas été remplacée, c’est donc la preuve que votre site est toujours accessible en non sécurisé. Il va falloir y remédier.

Si la page s’affiche en https (il y a le petit cadenas), cela signifie que le serveur a détecté la tentative d’accès non sécurisé et l’a corrigée.
Vous n’avez rien à faire, vous pouvez interrompre votre lecture ici.

Forcer le https

Vous êtes toujours là ? C’est donc que vous voulez savoir comment forcer l’accès https. Alors allons-y !

Pour remédier au problème, nous devons accéder au serveur via un logiciel FTP afin de modifier 2 fichiers sur votre hébergement : assurez-vous de disposez d’un logiciel FTP, et des identifiants de votre compte FTP
(ils vous ont été fournis par votre hébergeur).

Si vous ne vous sentez pas de faire l’intervention, je vous propose de la faire pour vous, en toute sécurité,
» pour 35 €  « !

Directive WordPress

Dans l’absolu, cette directive sera redondante avec la mise en place des redirections https au niveau du serveur, mais elle ne coûte rien et s’appliquera même si le .htaccess était désactivé pour une raison ou une autre.

Cette directive WordPress a pour fonction de forcer le https pour toute la partie administrative (back-office) et pour la page de connexion (login.php).

Accès FTP

Connectez-vous en FTP à votre hébergement, recherchez le fichier wp-config.php situé à la racine de votre site et ouvrez-le afin de l’éditer.

Vers la fin du fichier, repérez la ligne :

/* That's all, stop editing! Happy blogging. */

Comme nous y invite le texte (ici en anglais), nous allons ajouter notre directive AVANT

/* Force SSL for admin and login */ 
define( 'FORCE_SSL_ADMIN', true ); 
/* That's all, stop editing! Happy blogging. */

Si vous n’avez pas la ligne /* That's all, stop editing! Happy blogging. */,
ajoutez le define( ‘FORCE_SSL_ADMIN’, true ); AVANT

if ( ! defined( 'ABSPATH' ) ) {
    define( 'ABSPATH', __DIR__ . '/' );
}
require_once( ABSPATH . 'wp-settings.php' );

Ce qui donnerait :

/* Force SSL for admin and login */
define( 'FORCE_SSL_ADMIN', true );

if ( ! defined( 'ABSPATH' ) ) {
  define( 'ABSPATH', __DIR__ . '/' );
}

required_once( ABSPATH . 'wp-settings.php' );

Enregistrez et fermez le fichier wp-config.php.

Serveur Apache : fichier .htaccess

Nous nous intéressons ici qu’aux hébergements utilisant un serveur Apache (actuellement la plus grande majorité des installations).
Si votre hébergement utilise un serveur nginx, voyez plus bas.

Attention : il n’y a pas de méthode universelle, cela dépend de votre hébergeur. Je vous propose ci-dessous quelques méthodes d’hébergeurs avec qui j’ai eu l’occasion de travailler. Si vous doutez ou que votre hébergeur n’est pas cité, reportez-vous à la FAQ de votre hébergeur.

Accès FTP

Connectez-vous en FTP à votre hébergement et recherchez le fichier .htaccess situé à la racine de votre site.
Avant de faire quoi que ce soit, dupliquez ce fichier et nommez-le .htaccess-bck afin d’avoir une sauvegarde.
Ceci fait, ouvrez le fichier .htaccess afin de l’éditer.

Repérez le bloc d’instructions ajouté par WordPress :

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Nous devons ajouter les instructions concernant le https AVANT le bloc WordPress.

Dans les propositions ci-dessous, repérez celle qui concerne votre hébergeur, copiez-la et collez-la une ligne avant le # BEGIN WordPress afin d’obtenir quelque chose comme ceci :

# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# End Force HTTPS

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase / RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Ne recopiez pas le code ci-dessus, il s’agit d’un exemple : les lignes colorées sont à adapter en fonction de votre hébergeur, voir ci-après.

Après avoir enregistré le fichier .htaccess, testez votre site.
Faites une tentatives d’accès non sécurisée et vérifiez qu’elle est redirigée en https. Vérifiez ensuite que le site se comporte normalement.

En cas de problème, vérifiez que vous avez correctement copié le code correspondant à votre hébergeur, qu’il n’y a pas de caractères parasites, etc.
Si le problème persiste, supprimez le code que vous venez d’ajouter et enregistrez. Vérifiez que le site fonctionne.
Si le site ne fonctionne toujours pas, supprimez le fichier .htaccess et rétablissez le fichier précédemment sauvegardé : renommez le fichier .htaccess-bck en .htaccess afin de revenir à la configuration initiale.

Si vous ne vous sentez pas de faire l’intervention, je vous propose de la faire pour vous, en toute sécurité,
» pour 35 €  « !

Infomaniak

Si vous utilisez Local by Flywheel en serveur Apache, vous pouvez également utiliser ce code.

Copiez/collez le code ci-dessous dans le fichier .htaccess, enregistrez et fermez, puis testez le fonctionnement du site.

# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# End Force HTTPS

Si une erreur de boucle survient, remplacez la ligne :

RewriteCond %{HTTP:X-Forwarded-Proto} !https

par

RewriteCond %{HTTPS} off
o2Switch

Copiez/collez le code ci-dessous dans le fichier .htaccess, enregistrez et fermez, puis testez le fonctionnement du site.

# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} !on
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# End Force HTTPS
1&1, BlueHost, DreamHost, Godaddy…

Si vous utilisez LAMP, vous pouvez également utiliser cette méthode.

Copiez/collez le code ci-dessous dans le fichier .htaccess, enregistrez et fermez, puis testez le fonctionnement du site.

# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=On
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# End Force HTTPS
Ionos (selon le commentaire de Bos Informatique)

Copiez/collez le code ci-dessous dans le fichier .htaccess, remplacez VOTRE.NOM.DE.DOMAINE par votre site internet, enregistrez et fermez, puis testez le fonctionnement du site.

# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://VOTRE.NOM.DE.DOMAINE/$1 [R,L]
</IfModule>
# End Force HTTPS
OVH

Copiez/collez le code ci-dessous dans le fichier .htaccess, enregistrez et fermez, puis testez le fonctionnement du site.

# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
# End Force HTTPS
Alternative

Rien ne fonctionne ? Essayez avec les instructions ci-dessous.
Copiez/collez le code ci-dessous dans le fichier .htaccess, enregistrez et fermez, puis testez le fonctionnement du site.
Si la redirection https ne s’effectue toujours pas, rétablissez la configuration initiale, puis consultez la FAQ de votre hébergeur.

# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteCond %{ENV:HTTPS} !=On
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# End Force HTTPS

Serveur nginx

Pour un hébergement sous serveur nginx, modifiez la configuration en ajoutant une directive server selon l’exemple ci-dessous.
Directive que vous placez à l’intérieur de la section html { … }.
Bien sûr, remplacez les exemple.com par votre nom de domaine.

html {
	server {
		listen 80 default_server;
		listen [::]:80 default_server;
		server_name exemple.com www.exemple.com;
		return 301 https://$server_name$request_uri;
	}
	# autres directives existantes dans votre config...
}

Si vous ne vous sentez pas de faire l’intervention, je vous propose de la faire pour vous, en toute sécurité,
» pour 35 €  « !