Rediriger une page de HTTPS vers HTTP pour palier une mauvaise indexation

Il y a quelques temps j’ai rencontré un problème de référencement lié à des liens incorrects qui renvoyaient à tort vers une URL de type HTTPS au lieu de HTTP. Ceci provoquait une indexation erronée de mon site chez Bing et Qwant qui provoquait un message d’alerte au niveau navigateur, indiquant l’absence de certificat de sécurité valide.

Ce message qui pouvait effrayer de nombreux visiteurs ne sachant pas à quoi s’attendre avait pour conséquence une baisse de la fréquentation non négligeable.

Dans ce cas la première chose à faire est d’essayer de faire rectifier le lien en contactant les webmasters concernés. Mais il peut être utile de forcer une redirection directement sur le site pour palier immédiatement au problème.
En outre, c’est utile pour éviter le duplicate content quand une même page est accessible via http et https.
Voici comment faire :

Méthode 1 : Modification du fichier .htacces

Pour détecter si la connexion est protégée par SSL/TLS vous pouvez utiliser la variable système HTTPS et écrire une règle de réécriture de l’URL. Voici un petit bout de code à placer dans ce fichier .htaccess pour la redirection.

RewriteEngine on
#redirection permanente de http vers https
RewriteCond %{HTTPS} ^off$ [NC]
 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
redirection permanente de http vers https

Oubien, si vous souhaitez passer de HTTPS vers HTTP :

RewriteEngine on
 #redirection définitive de https vers http
 RewriteCond %{HTTPS} ^on$ [NC]
 RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
redirection définitive de https vers http

Si vous utilisez WordPress, ces lignes peuvent êtrée placée entre …

Méthode 2 : Utilisation d’un code php qui analyse du protocole et procède à une redirection vers HTTP si nécessaire

Le flag R=301 est optionnel, vous pouvez donc le retirer si vous ne voulez pas de redirection permanente. Ce code est à placer tout au début de votre page.

function isSecure() {
  return
    (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443;
}
if(isSecure()) 
{
	header("Status: 301 Moved Permanently", false, 301);
	header('Location: http://www.' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
	exit();
}

Remarque importante : Ce code PHP n’empêche pas l’affichage du message d’erreur « Vous avez demandé à Firefox de se connecter de manière sécurisée » ou encore « Le certificat de sécurité présenté par ce site Web a été émis pour une autre adresse de site Web » pour Internet Explorer. En revanche au prochain passage du moteurs de recherche, la prise en compte la redirection 301 et devrait réindexer la page comme il se doit.

1 COMMENTAIRE

  1. Bonjour,

    Tout d’abord, merci pour cet article !

    Je rencontre actuellement le même problème ; le référencement renvoie à tort vers une url https. Du coup ma redirection ne marche pas (sauf si je force à la main en enlevant le https).

    J’ai essayé de modifier mon fichiers .htaccess mais cela ne résoud pas le problème. Est-ce qu’il y a un délais pour que cela se mette en place ?

    Merci !

LAISSER UNE REPONSE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici