technical
Servez un vrai 404, pas un soft-404
MetricSpot demande une URL aléatoire inexistante et vérifie le statut. Les soft-404 (200 OK sur une page « non trouvée ») polluent l'index et embrouillent les robots.
Ce que vérifie ce contrôle
Émet une requête vers une URL aléatoire sur votre domaine qui n’existe presque certainement pas (du type /__metricspot_probe_${random}). Le contrôle échoue lorsque :
- Le serveur renvoie
200 OKavec une page « non trouvée » (un soft 404 — le pire des cas). - Le serveur renvoie
5xxau lieu de404. - Le serveur renvoie
200avec une redirection vers la page d’accueil (aussi un soft 404 aux yeux de Google).
Il passe lorsque le serveur renvoie un vrai 404 (ou 410 Gone) avec une page d’erreur utile.
Pourquoi c’est important
Les soft 404 embrouillent les robots et corrompent votre index.
- Index gonflé. Google indexe une page soft-404 comme toute page normale en 200. Un site avec un CMS bogué qui retourne 200 pour des fautes de frappe peut se retrouver avec des milliers d’URL poubelles dans l’index.
- Budget de crawl gaspillé. Googlebot revisite les URL soft-404 en quête de nouveau contenu, mangeant le budget de crawl des vraies pages.
- Erreurs dans Search Console. Search Console finit par marquer les pages soft-404 comme erreurs
Soft 404et arrête de les indexer — mais le nettoyage prend des semaines. - UX. Une vraie page 404 peut suggérer du contenu connexe, orienter vers la recherche et récupérer la visite. Une redirection 200 vers l’accueil laisse l’utilisateur sans signal indiquant que l’URL d’origine était cassée.
Comment le corriger
Configurez votre serveur pour renvoyer 404 Not Found sur les chemins inconnus, et affichez une page utile par-dessus.
nginx — définissez une page d’erreur personnalisée qui renvoie toujours 404 :
server {
error_page 404 /404.html;
location = /404.html {
internal;
}
}
Apache (.htaccess) :
ErrorDocument 404 /404.html
Next.js (App Router) :
// app/not-found.tsx
export default function NotFound() {
return (
<main>
<h1>404 — Page introuvable</h1>
<p>Essayez la <a href="/">page d'accueil</a> ou la <a href="/search/">recherche</a>.</p>
</main>
);
}
Next.js sert automatiquement cette page avec un code de statut 404.
Astro :
---
// src/pages/404.astro
---
<html>
<head><title>404 — Introuvable</title></head>
<body>
<h1>404 — Page introuvable</h1>
<a href="/">Retour à l'accueil</a>
</body>
</html>
Astro compile ceci en 404.html statique que nginx sert automatiquement avec le bon code de statut.
WordPress — les thèmes livrent un template 404.php. Si le vôtre redirige vers l’accueil au lieu de retourner 404, cherchez dans functions.php un wp_redirect() mal placé et retirez-le.
Rendez la page utile. Un vrai 404 doit :
- Être honnête — le titre affiche « Page introuvable », pas « Bienvenue ».
- Suggérer 3–4 pages populaires (la navigation globale ne suffit pas ; proposez des liens spécifiques).
- Inclure la recherche si vous en avez une.
- Respecter la charte du site pour que l’utilisateur sache qu’il est toujours chez vous.
Vérifiez vous-même :
curl -sI https://votredomaine.com/__definitely_does_not_exist
La première ligne doit être HTTP/1.1 404 Not Found (ou HTTP/2 404). Tout le reste échoue au contrôle.
Questions fréquentes
Dois-je rediriger les 404 vers la page d’accueil ?
Non. Une redirection 301 vers l’accueil dit à Google « cette URL a été déplacée vers / » — ce qui est un mensonge. L’utilisateur voit l’accueil sans savoir que son URL d’origine était fausse ; l’URL est désormais « indexée » comme un doublon de l’accueil. Renvoyez toujours un vrai 404.
Quelle différence entre 404 et 410 ?
404 Not Found signifie « nous ne trouvons pas cette ressource pour l’instant ». 410 Gone signifie « cette ressource existait mais a été supprimée définitivement ». Google retire les URL en 410 de l’index plus vite que les URL en 404. Utilisez 410 pour du contenu volontairement supprimé ; 404 convient pour les fautes de frappe et les bots cherchant des vulnérabilités.
Ma page 404 renvoie 200 — comment corriger ?
Deux causes courantes : (1) votre CMS utilise une route wildcard qui attrape tout, y compris les 404, et les sert en 200 ; (2) votre CDN a mis en cache une réponse cassée avec un statut 200. Pour (1), définissez explicitement res.status(404) dans le gestionnaire not-found de votre framework. Pour (2), purgez le cache CDN et vérifiez directement contre l’origine.
Sources
Dernière mise à jour 2026-05-11