Empêcher l'indexation des pages tag PrestaShop malgré robots.txt
Les pages tag PrestaShop restent indexées malgré robots.txt ? Découvrez comment bloquer leur indexation avec la balise meta noindex dans le head de votre thème.
En bref : Le fichier robots.txt bloque le crawl mais pas l'indexation : les pages tag PrestaShop restent dans Google. La solution est d'injecter une balise meta noindex conditionnelle dans le head via Smarty ou un module hook displayHeader, puis de retirer le Disallow correspondant du robots.txt.
Le problème : robots.txt ne suffit pas à désindexer les pages tag
Une erreur fréquente en SEO PrestaShop consiste à croire que bloquer une URL dans le fichier robots.txt empêche Google de l'indexer. C'est faux. Le fichier robots.txt empêche le crawl (l'exploration), mais pas l'indexation.
Concrètement, si d'autres pages de votre site — ou des sites externes — contiennent des liens vers vos pages tag (?tag=mot-clé), Google peut parfaitement les indexer sans jamais les explorer. Vous verrez alors dans la Search Console des URLs du type https://votresite.com/recherche?tag=chaussures apparaître dans l'index, souvent avec la mention « URL indexée, mais bloquée par le robots.txt ».
Les pages tag PrestaShop sont particulièrement problématiques pour le SEO :
- **Contenu dupliqué** : elles affichent des listes de produits déjà présentes dans vos catégories
- **Contenu mince** : souvent peu ou pas de contenu textuel unique
- **Dilution du crawl budget** : des centaines de combinaisons possibles gaspillent les ressources de Googlebot
- **Cannibalisation** : elles peuvent concurrencer vos pages catégories sur les mêmes requêtes
La solution : la balise meta robots noindex
Google recommande officiellement d'utiliser la balise pour empêcher l'indexation d'une page. Contrairement au robots.txt, cette directive nécessite que Google explore la page pour la lire, mais une fois lue, elle ordonne formellement au moteur de retirer la page de son index.
Pourquoi noindex est supérieur à robots.txt pour ce cas
Point crucial : si vous bloquez le crawl via robots.txt ET ajoutez une balise noindex, Google ne pourra jamais lire la balise noindex puisqu'il ne crawlera pas la page. Les deux méthodes sont contradictoires. Il faut donc retirer le blocage des pages tag du robots.txt et utiliser uniquement la balise noindex.
Implémentation dans PrestaShop 1.7
Dans PrestaShop 1.7, le fichier de template responsable de la section se trouve dans votre thème. L'injection conditionnelle se fait via Smarty.
Étape 1 : Identifier le bon fichier template
Le fichier cible est le template head de votre thème :
/themes/votre-theme/templates/_partials/head.tpl
Ce fichier est inclus dans le layout principal layout-both-columns.tpl (ou tout autre layout actif). Vous pouvez intervenir dans l'un ou l'autre.
Étape 2 : Ajouter la condition Smarty
Insérez le code suivant à l'intérieur du bloc , idéalement après les balises meta existantes :
{if $smarty.server.REQUEST_URI|strpos:"?tag="}
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex, nofollow">
{/if}
Explications du code :
- `$smarty.server.REQUEST_URI` : variable Smarty qui contient l'URI de la requête en cours (équivalent de `$_SERVER['REQUEST_URI']` en PHP)
- `|strpos:"?tag="` : le modificateur Smarty `strpos` vérifie si la chaîne `?tag=` est présente dans l'URL
- La double balise (`robots` + `googlebot`) cible à la fois tous les moteurs et spécifiquement Googlebot
- `nofollow` est ajouté en complément pour indiquer aux moteurs de ne pas suivre les liens présents sur ces pages
Étape 3 : Vérification
Après modification, vérifiez le résultat :
- Accédez à une page tag de votre boutique (ex : `votresite.com/recherche?tag=test`)
- Affichez le code source (Ctrl+U)
- Recherchez `noindex` dans le code — la balise doit être présente dans le ``
- Accédez à une page produit ou catégorie classique et vérifiez que la balise n'y apparaît **pas**
- Survit aux mises à jour du thème
- Facilement extensible (ajouter d'autres patterns d'URL à bloquer)
- Activable/désactivable depuis le back-office
- Testable indépendamment du thème
- Allez dans **Google Search Console > Pages**
- Filtrez par « URL contenant `?tag=` »
- Vérifiez que le statut passe progressivement à « Exclue – Page avec balise noindex »
- Utilisez l'**outil d'inspection d'URL** sur une page tag pour forcer Google à re-crawler
- Ne comptez jamais sur `robots.txt` seul pour désindexer des pages
- Utilisez `meta noindex` dans le `` pour un blocage fiable
- Préférez un module PrestaShop à une modification directe du thème
- Retirez les directives `Disallow` contradictoires du `robots.txt`
- Surveillez la progression dans la Search Console
- Étendez le `noindex` à toutes les pages à faible valeur SEO (recherche, tri, filtres)
Implémentation dans PrestaShop 8.x
PrestaShop 8.x conserve le moteur de templates Smarty, la méthode reste donc identique. Cependant, quelques ajustements sont recommandés pour une approche plus robuste.
Approche améliorée avec un module personnalisé
Pour une solution plus propre et résistante aux mises à jour du thème, préférez un module qui utilise le hook displayHeader :
<?php
// modules/ac_seonoindex/ac_seonoindex.php
class Ac_SeoNoindex extends Module
{
public function __construct()
{
$this->name = 'ac_seonoindex';
$this->version = '1.0.0';
$this->author = 'Alexandre Carette';
$this->tab = 'seo';
parent::__construct();
$this->displayName = $this->l('SEO NoIndex Manager');
}
public function install()
{
return parent::install()
&& $this->registerHook('displayHeader');
}
public function hookDisplayHeader($params)
{
$requestUri = $_SERVER['REQUEST_URI'] ?? '';
// Pages tag
if (strpos($requestUri, '?tag=') !== false || strpos($requestUri, '&tag=') !== false) {
return '<meta name="robots" content="noindex, nofollow">' . "\n"
. '<meta name="googlebot" content="noindex, nofollow">';
}
return '';
}
}
Avantages de l'approche module :
Patterns d'URL supplémentaires à considérer
Profitez de cette implémentation pour bloquer d'autres URLs parasites courantes :
public function hookDisplayHeader($params)
{
$requestUri = $_SERVER['REQUEST_URI'] ?? '';
$noindexPatterns = [
'?tag=',
'&tag=',
'?q=',
'&q=',
'controller=search',
'order=product.',
'?n=', // pagination de recherche
];
foreach ($noindexPatterns as $pattern) {
if (strpos($requestUri, $pattern) !== false) {
return '<meta name="robots" content="noindex, nofollow">' . "\n"
. '<meta name="googlebot" content="noindex, nofollow">';
}
}
return '';
}
Nettoyer le robots.txt
Une fois la balise noindex en place, pensez à mettre à jour votre robots.txt. Retirez les lignes qui bloquaient les pages tag :
# Avant (problématique)
- Disallow: /*?tag=
- Disallow: /recherche
# Après (correct)
# Les pages tag sont gérées via meta noindex
# Ne pas bloquer le crawl pour que Google puisse lire la directive noindex
Suivre la désindexation dans Google Search Console
Après déploiement :
La désindexation complète peut prendre de quelques jours à plusieurs semaines selon la fréquence de crawl de votre site.
Résumé des bonnes pratiques
Questions fréquentes
Tout ce que vous devez savoir sur ce sujet.
Un projet PrestaShop ?
Discutons-en directement.
193 projets livrés
Lire sur le blog

Alexandre Carette
Expert PrestaShop & Architecture E-commerce
Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.