J'ai passé une matinée sur un rapport d'indexation qui semblait se contredire. Des URLs décrites comme introuvables répondaient en 200. Menu en place, titre poli, bloc central vide. Le robot avait tranché avant moi : ces pages faisaient semblant d'exister.
Ce qu'il faut retenir
- Un soft 404 est une page d'échec servie avec un code de succès, presque toujours un 200.
- Le robot juge le gabarit, le texte et la répétition du même vide, bien au-delà du seul code HTTP.
- Fiches sans objet, recherches internes à zéro résultat et auteurs fantômes en produisent des paquets.
- Le correctif suit le cas : 404, 410, contenu vraiment écrit, ou redirection vers une URL précise.
- Envoyer ce vide vers l'accueil entretient le signal d'erreur et occupe le crawl.
- Après chaque mise en ligne, je reteste quelques URLs mortes connues. Le modèle a la mémoire courte.
Pourquoi un 200 peut quand même être une erreur
Un 200 annonce que la ressource est là. Quand le corps raconte une absence (produit retiré, article supprimé, recherche sans réponse), le contrat casse. L'échec tient dans la page. Le succès reste collé à l'en-tête. Ce décalage a un nom : soft 404.
Ce que le robot regarde vraiment
Il cherche des indices simples. Un titre qui dit « introuvable » ou « aucun résultat ». Un corps réduit à deux lignes. Le même gabarit recopié sur des centaines d'adresses. Parfois une copie visuelle de la vraie page 404, servie avec un autre code.
Sur une boutique, les fiches sorties du catalogue gardaient leur URL. Le thème laissait l'en-tête, le pied de page, et la phrase « Cet article n'est plus disponible ». Code 200. Quelques cycles plus tard, une partie de ces adresses apparaissait en soft 404. Le reste dormait parmi les pages crawlées puis laissées de côté. Un 200 donne envie de revenir.
Le coût sur le crawl
Je n'ai pas vu de pénalité manuelle limitée à ce motif. Le dégât est plus quotidien. Chaque passage sur une impasse est un passage qui ne va pas vers une page utile.
Quand les filtres vides, les identifiants obsolètes et les comptes créés automatiquement se comptent par centaines, le robot s'use sur du néant. Certaines URLs restent un moment dans l'index avec un extrait pauvre. Puis elles en sortent, sans que vous ayez décidé leur sort.
Les gabarits qui fabriquent des soft 404
Le souci vient du modèle. Celui qui doit toujours afficher quelque chose, même quand la ressource a disparu.
Fiches, auteurs et rubriques vides
Quatre cas reviennent à chaque audit.
- Une fiche dépubliée dont l'URL répond encore.
- Une page auteur pour un compte sans aucun article.
- Une catégorie vidée : le titre reste, la liste non.
- Une recherche interne qui affiche « 0 résultat » pour n'importe quelle saisie, y compris une suite de lettres au hasard.
Ce dernier cas pollue vite. Un lien, un paramètre ou un ancien sitemap, et chaque variante devient une page. Même gabarit. Seul le mot change. Vu du robot, c'est une file d'échecs habillés en succès.
Un message gentil avec le mauvais code
Les équipes veulent une phrase rassurante, des suggestions, un champ pour relancer. L'intention est saine. Si l'adresse ne correspond à rien, ce message peut vivre sur un vrai 404. Le statut doit suivre le sens de l'URL. Des suggestions tiennent très bien sur une page d'erreur soignée.
J'ai fait l'inverse sur un site éditorial, il y a quelques années. Pour garder le visiteur, les articles supprimés réécrivaient l'accueil en 200, sans redirection visible. Le titre de l'accueil s'affichait sur des URLs mortes. Le rapport s'est garni de soft 404. J'ai arrêté. Une 404 nette, avec des liens vers des dossiers encore valides, a mieux tenu.
Comment je les détecte sur un site en ligne
Je commence par un échantillon. Le crawl large vient ensuite, si le motif se confirme.
Les signes dans le HTML
Sur les URLs douteuses, je relève six points :
- Le code HTTP final, une fois les redirections suivies.
- Le titre et le H1, à la recherche d'un vocabulaire d'absence.
- Le texte du corps, une fois le menu et le pied de page écartés.
- Le même bloc « désolé » sur des adresses sans rapport entre elles.
- Une canonique vers l'accueil, ou vers l'URL vide elle-même.
- Un modèle de recherche interne encore ouvert à l'index, sans noindex.
Une canonique vers l'accueil, posée sur du vide, mélange deux messages. L'un dit de regarder l'accueil. L'autre présente une adresse qui ressemble à une erreur. Je préfère un statut franc, que tout le monde lit de la même façon.
Croiser le crawl et le rapport d'indexation
Le rapport d'indexation ne montre que ce qui est déjà classé. Je le prends comme un indice. Je le recoupe avec un export simple : code, titre, taille du contenu principal, présence du motif « aucun résultat ».
| Situation | Code servi | Contenu observé | Décision saine |
|---|---|---|---|
| Ressource supprimée, aucun équivalent | 404 ou 410 | Message d'erreur et quelques liens utiles | Garder l'erreur franche |
| Ressource renommée, une cible précise existe | 301 | La page de destination, après une seule redirection | Rediriger vers cette cible |
| Page courte qui répond à une vraie demande | 200 | Texte utile et unique, même bref | Compléter, garder l'URL |
| Gabarit vide, URL sans objet | 200 encore | Titre d'absence, corps quasi vide | Passer en 404, ou remplir vraiment |
| Recherche interne sans résultat | 200 encore | « 0 résultat » répété | 404 sur l'échec, noindex sur la recherche |
Une page courte et un soft 404 se ressemblent de loin. Quinze lignes qui répondent à la question peuvent rester en 200. Une coquille de template doit changer de code. Le service rendu sépare les deux, la longueur seule non.
Corriger sans ouvrir un autre trou
Tout rediriger, tout de suite, abîme souvent plus que le vide de départ. Je trie avant de toucher au serveur.
Quatre tas, quatre traitements
- Objet disparu, rien d'équivalent. Je sers un 404. Si la disparition est définitive, un 410 : le robot revient moins souvent.
- Objet renommé, une cible précise existe. Un 301 vers cette URL, une seule fois, sans chaîne. La cible parle du même sujet.
- Objet légitime, texte trop pauvre. Je garde le 200 et j'étoffe la page. Le sujet existe : il mérite un vrai texte.
- URL technique (recherche, tri, session, prévisualisation). Noindex sur le modèle. 404 quand la requête ne renvoie rien.
Je retire ensuite ces adresses du sitemap XML. Un sitemap qui continue de citer une 404 invite le robot à revenir sur le vide.
Deux pratiques que j'ai abandonnées
L'accueil n'est pas un dépôt pour les impasses. Des centaines d'intentions différentes atterrissent alors sur le même contenu générique. De l'extérieur, le schéma ressemble à une erreur molle. Le visiteur, lui, arrive loin de ce qu'il cherchait.
L'autre habitude : garder le 200 et coller un noindex « pour plus tard ». Le robot télécharge encore une page dont le code et le texte se contredisent. Si la ressource n'existe plus, le 404 répond aux deux questions ensemble.
Empêcher le modèle d'en produire encore
Corriger URL par URL ne tient pas un trimestre. Le thème recommence au prochain import catalogue.
Une règle écrite dans le template
Ressource absente : le template d'erreur part avec un statut 404. Le design peut rester soigné. Le statut, lui, dit l'absence.
Pour les pages pauvres qui ont un vrai sujet, je fixe un seuil avec la rédaction, selon le type de page. En dessous du seuil, la page reste en brouillon. Au-dessus, on publie. Un chiffre unique pour une fiche technique et pour un éditorial crée des absurdités : les deux n'ont pas la même masse utile.
Les auteurs, les étiquettes et les catégories obtiennent une URL publique une fois qu'ils agrègent quelque chose. Beaucoup de CMS proposent cette option. Si le thème l'ignore, il faut la coder. Sinon chaque compte vide redevient une porte ouverte.
Le contrôle après chaque mise en ligne
Je garde une liste courte : quelques URLs mortes connues, et deux recherches internes volontairement vides. Après un déploiement, je les redemande.
Je vérifie quatre points. Le code final. Le titre. L'absence de ces URLs dans le sitemap. L'absence de canonique qui les rattache à l'accueil. Un seul point qui dérape, et le modèle a régressé.
Ça m'est arrivé après une mise à jour de thème. La page d'erreur était jolie. Le code était revenu à 200. Le test des URLs mortes a parlé le jour même. Le rapport d'indexation a suivi bien plus tard.
Une porte fermée vaut mieux qu'une pièce vide
Un soft 404 est une politesse qui se retourne contre le site. Le serveur affirme que la ressource est là. La page décrit un trou. Le robot finit par trancher seul, souvent dans un sens que vous n'auriez pas choisi.
La prochaine URL retirée qui affiche encore votre menu en code 200 est une fausse porte. Fermez-la avec le bon statut, ou remplissez-la pour de bon. L'index respire mieux quand chaque adresse mène quelque part.
Questions fréquentes
Un soft 404 déclenche-t-il une pénalité Google ?
Je n'ai jamais vu de pénalité manuelle limitée à ce motif. L'effet que je constate est plus terre à terre : le robot s'attarde sur des impasses, et le rapport d'indexation se remplit d'URLs vides. Corriger le statut règle le problème bien avant l'idée d'une sanction.
Faut-il rediriger chaque soft 404 vers la page d'accueil ?
L'accueil ne tient pas lieu de fiche, d'article, de rubrique ou de recherche vide. Je réserve le 301 à une cible qui reprend le même sujet. Le reste part en 404 ou en 410.
Une page avec peu de texte est-elle un soft 404 ?
Une page courte qui répond à l'intention peut rester indexable. Le soft 404 désigne une absence déguisée : message d'erreur, zéro résultat, objet supprimé, gabarit recopié sur des centaines d'adresses.
Combien de temps pour quitter l'index après correction ?
Cela suit le rythme de crawl du site. Sur ceux que je suis, le nouveau code est vu au passage suivant, et la sortie de l'index prend de quelques jours à quelques semaines. Une demande d'inspection d'URL accélère parfois la relecture. Elle ne fixe pas la date de sortie.