Pourquoi le code 404 ?

Le code de statut HTTP 404 est défini par la RFC 9110 publiée par l’IETF en juin 2022. Cette norme précise que le serveur ne trouve pas de représentation actuelle pour la ressource ciblée, sans indiquer si cette absence est temporaire ou permanente. Une distinction que la plupart des articles sur le sujet passent sous silence, et qui conditionne pourtant le traitement côté serveur comme côté moteur de recherche.

RFC 9110 et sémantique réelle du code 404

Le 404 appartient à la classe 4xx, celle des erreurs imputées au client. Le serveur indique qu’il n’a rien à servir pour l’URI demandée. Contrairement à une idée répandue, le texte « Not Found » qui accompagne le code n’est qu’une reason phrase facultative en HTTP/1.1. En HTTP/2 et HTTP/3, cette mention n’est plus transmise du tout : seul le code numérique circule entre le serveur et le client.

Lire également : Quel est l’avenir du SEO avec l’IA ?

Cette distinction a une conséquence pratique. Personnaliser le message affiché à l’utilisateur ne modifie en rien la réponse protocolaire. Le navigateur reçoit le code 404, point. Ce qui change l’expérience, c’est le corps HTML de la réponse, pas la reason phrase.

404 utilisé à la place de 403 : un usage de sécurité

La RFC 9110 autorise explicitement un serveur à renvoyer un 404 lorsqu’une ressource existe mais que l’accès est interdit. L’objectif : ne pas révéler l’existence d’une page protégée. Un serveur qui retournerait un 403 (Forbidden) confirme implicitement que la ressource est bien là. En renvoyant un 404, il masque cette information.

Lire également : Qu'est-ce qu'un texte d'ancrage ?

Nous observons ce comportement sur des API internes, des back-offices et des environnements de staging. C’est un choix délibéré de sécurité, pas un dysfonctionnement.

Panneau de serveur en datacenter affichant un message d'erreur 404 sur écran LCD embarqué

Différence entre code 404 et code 410 Gone

Le 410 Gone signale que la ressource a été supprimée de manière permanente et qu’aucune adresse de redirection n’est disponible. La RFC 9110 recommande son usage lorsque la disparition est confirmée comme définitive. Le 404 ne présume pas du caractère définitif de l’absence, ce qui le distingue fondamentalement du 410.

En pratique, Google traite ces deux codes différemment. Un 410 accélère la désindexation de l’URL concernée. Un 404 laisse le robot revenir vérifier à intervalle régulier si la page a refait surface. Si vous supprimez définitivement une page sans intention de la recréer, le 410 est le signal approprié.

Quand choisir 404 plutôt que 410

Le 404 reste pertinent dans plusieurs cas concrets :

  • La page est temporairement indisponible pour maintenance ou mise à jour de contenu, et vous ne souhaitez pas utiliser un 503 (Service Unavailable).
  • L’URL n’a jamais existé : l’utilisateur a simplement fait une faute de frappe dans la barre d’adresse.
  • Vous ne savez pas encore si le contenu sera republié sous la même URL ou sous une autre.

Renvoyer un 410 sur une URL que vous comptez réactiver sous quelques semaines serait contre-productif. Le moteur de recherche retirerait l’URL de son index plus vite que prévu.

Soft 404 : quand le serveur ment sur le statut

Un soft 404 désigne une page qui affiche un message de type « contenu introuvable » tout en renvoyant un code HTTP 200 (OK). Le serveur dit « tout va bien » alors que la page ne contient rien d’utile. Google Search Console signale ces incohérences et les traite comme des erreurs.

Ce problème survient fréquemment sur les sites e-commerce avec des fiches produits épuisées. Le template génère une page vide ou un message générique, mais le CMS continue de servir un 200. Le moteur de recherche indexe alors une page sans valeur, ce qui dilue le budget de crawl.

Détecter et corriger les soft 404

Nous recommandons de vérifier systématiquement le code de réponse HTTP à l’aide d’outils en ligne de commande (curl avec l’option -I) ou via Google Search Console. Un soft 404 doit être corrigé par l’une de ces approches :

  • Configurer le serveur pour retourner un vrai 404 ou un 410 lorsque le contenu n’existe plus.
  • Mettre en place une redirection 301 vers la page la plus pertinente si un contenu équivalent existe ailleurs sur le site.
  • Sur un site e-commerce, afficher un message clair tout en renvoyant le bon code de statut HTTP, et proposer des produits similaires dans le corps de la page.

Jeune femme dans un café découvrant une page d'erreur 404 sur son ordinateur portable

Page 404 personnalisée : ce qu’elle doit contenir côté serveur

Personnaliser la page d’erreur 404 ne se limite pas à y placer un visuel amusant. L’objectif est de conserver l’utilisateur sur le site en lui offrant des chemins de navigation alternatifs. La page doit renvoyer un vrai code 404 dans les en-têtes HTTP, pas un 200.

Côté contenu, une page 404 efficace intègre au minimum un lien vers la page d’accueil, un champ de recherche interne et quelques liens vers les catégories principales du site. Chaque lien interne sur cette page réduit le taux de sortie et oriente le trafic vers des pages indexées.

Sur Apache, la directive ErrorDocument dans le fichier .htaccess permet de pointer vers une page HTML personnalisée. Sur Nginx, la directive error_page remplit le même rôle. Dans les deux cas, vérifiez que le code de statut retourné reste bien 404 et non 200, sous peine de créer un soft 404 supplémentaire.

Le code 404 n’est ni un bug ni un défaut de conception. C’est un mécanisme protocolaire précis dont la sémantique, telle que définie par la RFC 9110, couvre des usages allant de la simple URL mal saisie au masquage volontaire de ressources protégées. Confondre 404, 410 et soft 404 revient à ignorer les signaux que votre serveur envoie aux moteurs de recherche, avec des conséquences directes sur l’indexation et l’expérience utilisateur.