Robots.txt et HTTPS

Si vous mettez en place le protocole SSL / TLS sur votre serveur pour pouvoir proposer une version HTTPS de votre site cela peut poser un problème d'indexation car les deux versions du site (HTTP et HTTPS) peuvent être potentiellement indexées toutes les deux par les moteurs de recherche.

Si vous souhaitez "Disallow" la version HTTPS de votre site avec le fichier robots.txt, la méthode à appliquer est dans la même veine que celle à mettre en place avec la problématique des sous-domaines.

Si vous déployez du contenu via HTTP et HTTPS, vous avez besoin de deux fichiers robots.txt différents pour chacun des protocoles. Par exemple, pour autoriser Googlebot à indexer toutes les pages en HTTP mais pas les pages en HTTPS, il suffit de mettre en place les deux robots.txt suivants :

Pour le protocole HTTP (http://www.mon-domaine.fr/robots.txt) :

User-agent: *
Allow: /

Pour le protocole HTTPS (https://www.mon-domaine.fr/robots.txt) :

User-agent: *
Disallow: /

Si il n'est pas possible de mettre en place ces deux fichiers robots.txt de cette manière, vous trouverez ci-dessous des solutions alternatives.

Mettre en place une balise <meta> robots sur toutes les pages en HTTPS

Il suffit de mettre en place une balise <meta> robots dans la section <head> sur les pages destinées à être accessibles via HTTPS.

<meta name="robots" content="noindex, nofollow">

Cette balise, mise en place sur les pages en HTTPS permettra d'empêcher l'indexation de celles-ci par les moteurs de recherche.

Plus d'informations sur cette balise sur la page dédiée : balise <meta> robots.

Mettre en place une balise <link rel="canonical"> sur toutes les pages en HTTPS

Ajouter une balise <link> avec comme attribut rel="canonical" sur certaines pages permet de spécifier aux moteurs de recherche quelle est la version préférée d'un ensemble de pages au contenu similaire.

Dans notre cas, il suffit d'ajouter sur l'ensemble des pages en HTTPS cette balise contenant l'URL canonique/préférée. Par exemple, la page https://www.mon-domaine.fr/page-a devra contenir cette balise faisant référence à la version HTTP de celle-ci.

Sur la page https://www.mon-domaine.fr/page-a, la version canonique est cette même page mais sous le protocole HTTP :

<html>
<head>
<title>Titre de la page</title>
<link rel="canonical" href="http://www.mon-domaine.fr/page-a" />
</head>

Plus d'informations sur balise canonique sur le centre d'aide de Google.

Utiliser un fichier robots.txt spécifique pour le protocole HTTPS

Le but de cette troisième solution est de présenter aux moteurs de recherche un fichier robots.txt différent en fonction des requêtes qu'ils effectuent sur le serveur.

Lorsqu'un moteur tentera d'accéder au fichier robots.txt de la version HTTPS, le contenu qui lui sera présenté sera celui d'un fichier robots-https.txt préalablemment créé contenant des règles spécifiques pour ce protocole.

Comme vu au début de l'article, si vous souhaitez bloquer l'indexation des pages HTTPS, il suffit de créer deux fichiers robots.txt.

Contenu du fichier robots.txt (à destination du protocole HTTP) :

User-agent: *
Allow: /

Contenu du fichier robots-https.txt (à destination du protocole HTTPS) :

User-agent: *
Disallow: /

Il suffit maintenant de modifier le fichier .htaccess situé à la racine de votre serveur web (ici, Apache). Voici trois variantes possibles en fonction de votre environnement serveur.

Variante 1 : si la connexion utilise SSL / TLS, on affiche le contenu du fichier robots-https.txt au lieu du robots.txt classique :

RewriteEngine on
RewriteCond %{HTTPS} ^on$ [NC]
RewriteRule ^robots.txt$ robots-https.txt [L]

Variante 2 : si le port utilisé est 443 (port par défaut des serveurs HTTPS), on affiche le contenu du fichier robots-https.txt au lieu du robots.txt classique :

RewriteEngine on
RewriteCond %{SERVER_PORT} 443
RewriteRule ^robots.txt$ robots-https.txt [L]

Variante 3 : si le port utilisé est différent du port 80 (port par défaut des serveurs HTTP), on affiche le contenu du fichier robots-https.txt au lieu du robots.txt classique :

RewriteEngine on
RewriteCond %{SERVER_PORT} !80
RewriteRule ^robots.txt$ robots-https.txt [L]