web-dev-qa-db-fra.com

Comment supprimer correctement les paramètres MULTIPLES de l'index Google à l'aide de htaccess et de canonical / noindex?

J'ai trouvé une question similaire avec une excellente réponse pour supprimer un paramètre d'URL unique. Cependant, que se passe-t-il si j'ai plus de 20 paramètres d'URL que je ne veux pas indexer?

En outre, dans l’exemple de solution ci-dessous, on suppose que vous souhaitez spécifier une plage de paramètres (ex: ?id=0 à ?id=9) ... Dans mon cas, je voudrais simplement ne rien indexer avec le ?id même paramètre, indépendamment de ce qui suit dans la chaîne d'URL. Disons également que je ne voudrais pas non plus indexer les paramètres ?start et ?Page ... Quelqu'un peut-il m'aider avec une version révisée du code suivant?

Pour NOINDEX:

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule .* - [E=NOINDEX_HEADER:1] 
</IfModule>

<IfModule mod_headers.c>
Header set X-Robots-Tag "noindex, follow" env=NOINDEX_HEADER
</IfModule>

Pour CANONICAL:

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule .* - [E=CANONICAL_HEADER:1]
</IfModule>

<IfModule mod_headers.c>
Header set Link '%{HTTP_Host}%{REQUEST_URI}e; rel="canonical"' env=CANONICAL_HEADER
</IfModule>

Merci @ Evgeniy et @ JohnMueller pour le code ci-dessus.
Référence: Comment supprimer correctement les paramètres de l'index Google?

3
Bryan Earl

Vous devez uniquement définir l'en-tête rel="canonical". Cela devrait être suffisant pour garantir que seule l'URL canonique (c'est-à-dire celle sans paramètres d'URL) apparaît dans les SERP. Définir une balise méta noindex robots pour de telles URL semblerait excessif (et un peu risqué) OMI.

Vous n'êtes probablement pas en mesure de définir une balise méta rel="canonical" dans le code HTML lui-même?

... Et si j'ai plus de 20 paramètres URL que je ne veux pas indexer?

Est-il prudent de dire que vous ne voulez aucune URL avec any URL params (c'est-à-dire une chaîne de requête) indexée? Dans ce cas, vous pouvez simplement changer votre directive RewriteCond pour lire:

RewriteCond %{QUERY_STRING} .

C'est-à-dire qu'il existe une chaîne de requête de n'importe quelle longueur.

Si, toutefois, vous souhaitez exclure 20 spécifiques paramètres URL, vous devrez les nommer tous. Par exemple:

RewriteCond %{QUERY_STRING} (?:^|&)(id|start|page|another)=

Le (?:^|&) est un groupe ne faisant pas de capture, qui veille à ne faire correspondre que ces noms de paramètres spécifiques et non pas quelque chose comme sid ou lastpage, etc. (s'ils peuvent éventuellement être des noms de paramètres d'URL).

Header set Link '%{HTTP_Host}%{REQUEST_URI}e; rel="canonical"' env=CANONICAL_HEADER

Ceci est invalide. Le symbole modèle (par exemple, http), e après la variable %{HTTP_Host} (il en résulterait une erreur de 500) et les crochets (<..>) autour de l'URL. Cela devrait être de la forme:

Header set Link '<http://%{HTTP_Host}e%{REQUEST_URI}e>; rel="canonical"'

Référence: (document de support de Google concernant les URL canoniques)
https://support.google.com/webmasters/answer/139066?hl=fr

UPDATE: Cependant, la variable d'environnement %{REQUEST_URI}e, lorsqu'elle est utilisée dans ce contexte, inclut ​​la chaîne de requête - qui défait vraiment l'objet de cet exercice. Ce bloc entier devrait être réécrit comme suit:

RewriteCond %{QUERY_STRING} .
RewriteRule (.*) - [E=CANONICAL_URI:$1]
Header set Link '<http://%{HTTP_Host}e/%{CANONICAL_URI}e>; rel="canonical"' env=CANONICAL_URI

Au lieu d'utiliser la variable REQUEST_URI, nous capturons le chemin d'URL uniquement (ce qui exclut la chaîne de requête) à l'aide de la directive RewriteRule et nous l'enregistrons dans la variable CANONICAL_URI. Ceci est ensuite utilisé dans la directive Header.

De plus, les conteneurs <IfModule> ne sont pas nécessaires. Ça marche ou ça casse, ces directives ne sont pas destinées à être optionnelles (sont-elles?).

3
MrWhite

Outre les redirections et les balises méta, il est possible d'empêcher Google d'indexer des paramètres d'URL spécifiques en les configurant dans la console de recherche Google: https://support.google.com/webmasters/answer/6080550?hl=fr

Vous pouvez définir les paramètres sur "N'affecte pas le contenu de la page". Ceci concerne les paramètres de suivi qui ne changent pas réellement la page. Ce paramètre permet à Googlebot de les analyser, puis d'indexer la version sans eux.

Vous pouvez également définir les paramètres sur "Modifie le contenu de la page", puis sur "Analyser sans URL". Googlebot ne doit donc pas analyser ces URL avec les paramètres correspondants. Ils tomberaient alors pour la plupart hors de l’index. Vous pouvez utiliser cette option pour les paramètres de pagination et de tri entraînant une duplication du contenu par rapport à la page sans aucun paramètre.

1