Le WordPress d'aujourd'hui, décodé pour les développeurs

SEO & GEO

L’erreur « Soft 404 » de Search Console sur des pages de résultats WordPress vides

Une recherche interne sans résultat renvoie un code 200 alors que la page est vide. Search Console le signale, à raison.

Par WordPress Développement • 11 mars 2022 • 4 min de lecture • Aucun commentaire
L'erreur « Soft 404 » de Search Console sur des pages de résultats WordPress vides

Une page qui répond avec un code 200 « tout va bien » alors qu’elle n’affiche ni article, ni produit, ni message clair : c’est exactement la situation qu’un Soft 404 décrit dans Search Console. Le serveur ment un peu, sans le savoir — il annonce un succès pour une page qui, du point de vue de l’utilisateur comme de celui de Google, ne contient rien d’exploitable.

Ce statut apparaît fréquemment sur WordPress via trois gabarits que le thème gère rarement avec soin : la page de résultats de recherche interne sans résultat, une page d’archive de filtre WooCommerce vide, et une page de catégorie ou d’étiquette dont tous les articles ont été dépubliés. Dans les trois cas, le correctif est le même dans son principe : renvoyer un signal HTTP cohérent avec le contenu réellement affiché.

Ce que Google entend par « Soft 404 »

Google ne se fie pas uniquement au code HTTP renvoyé par le serveur. Il analyse aussi le contenu de la page pour détecter des indices classiques d’absence de résultat : un texte du type « Aucun résultat trouvé pour votre recherche », un contenu très court, une structure de page quasi identique à une page d’erreur connue du site. Si ces indices sont présents alors que le code HTTP annonce 200, Google reclasse la page comme Soft 404 et l’exclut de l’index — même si, techniquement, le serveur n’a renvoyé aucune erreur.

Ce mécanisme protège la qualité de l’index : sans lui, chaque recherche interne infructueuse sur chaque site WordPress créerait une URL indexable, potentiellement des milliers par combinaison de mots-clés, sans aucune valeur pour l’utilisateur qui clique depuis les résultats de recherche.

Le cas de la recherche interne WordPress

L'essentiel à retenir : Un code 200 ne suffit pas s'il n'y a rien à afficher ; Trois familles de pages WordPress sont concernées ; Le correctif dépend du contenu attendu à cette URL

Par défaut, le gabarit search.php d’un thème WordPress standard affiche un message « Aucun résultat » tout en renvoyant un en-tête HTTP 200, exactement comme n’importe quelle autre page. C’est un choix historique du cœur de WordPress, cohérent pour l’expérience utilisateur mais problématique pour le SEO technique si ces URL sont laissées explorables et indexables.

Le correctif consiste à intercepter la requête de recherche vide et à modifier le code de statut avant l’envoi de l’en-tête, via le hook template_redirect :

add_action( 'template_redirect', function() {
    if ( is_search() && ! have_posts() ) {
        status_header( 404 );
        nocache_headers();
    }
} );

Attention : cette approche renvoie une vraie erreur 404, pas un Soft 404. Elle a l’avantage de la clarté, mais suppose que le thème affiche un gabarit d’erreur cohérent avec ce code, faute de quoi le visiteur voit un message « Aucun résultat » sur une page techniquement en erreur — ce qui reste préférable à un doublon indexable.

Le cas des archives de filtre WooCommerce

Sur une boutique qui propose des filtres combinables (couleur, taille, marque), certaines combinaisons ne renvoient logiquement aucun produit. Ces URL sont générées par des paramètres de requête et devraient, dans l’idéal, ne jamais être indexables : une balise noindex conditionnelle, appliquée dès que woocommerce_get_loop_prop( 'total' ) retourne zéro, règle le problème à la source sans multiplier les erreurs 404 sur des URL générées dynamiquement par des scripts de filtre côté client.

Le cas des catégories vidées de leurs articles

Une catégorie ou une étiquette dont tous les articles ont été dépubliés ou déplacés reste accessible par son URL, avec un gabarit d’archive qui affiche une page quasi vide. Contrairement au cas de la recherche interne, ce n’est pas une situation transitoire liée à une saisie utilisateur : c’est une taxonomie devenue obsolète.

  • Si la taxonomie n’a plus vocation à être utilisée, la supprimer et rediriger son URL en 301 vers une page pertinente
  • Si elle doit rester active pour de futurs contenus, ajouter une balise noindex, follow tant qu’elle est vide
  • Ne jamais laisser une archive vide indexable indéfiniment, même « en attendant »

Distinguer les trois situations avant de corriger

Gabarit concernéNature du videCorrectif recommandé
Recherche interneTransitoire, dépend de la saisie404 réel ou noindex conditionnel
Filtre WooCommerceCombinatoire, prévisibleNoindex conditionnel sur total = 0
Catégorie vidéeDurable, structurelleSuppression + redirection 301

En résumé

Un Soft 404 n’est pas une anomalie du serveur mais un désaccord entre le code HTTP annoncé et le contenu réellement livré. Sur WordPress, il concerne presque toujours des pages générées dynamiquement — recherche, filtre, taxonomie vidée — que le thème n’a jamais été conçu pour traiter avec un statut HTTP différencié. Corriger ces trois gabarits élimine la grande majorité des Soft 404 signalés dans Search Console, sans toucher au reste du site.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi