Comment retourner correctement le code de statut HTTP 404 pour une page d’erreur ?

Une page d’erreur 404, que l’on appelle aussi un Error Document 404, est, avant tout, une page informant un utilisateur que la ressource demandée n’existe pas. Par exemple, si un internaute suit un lien et que la page cible n’existe plus, le serveur doit afficher une page d’erreur 404.

Cependant, ce n’est pas l’unique rôle de la page d’erreur 404. Si elle est bien configurée, elle informe aussi le Google-Bot de l’existence réelle ou non d’un document. Pour que cela fonctionne correctement, il est important que la page d’erreur 404 retourne le bon code de statut HTTP 404 – autrement, la page 404 est défectueuse.

Comment puis-je retourner le bon code de statut HTTP pour une page d’erreur 404 ?

Les serveurs ou le Content Management System (CMS) utilisés ne sont souvent pas configurés correctement. Cela peut résulter en une page d’erreur qui retourne le code de statut HTTP 200 (OK) ou en une redirection 301 qui renvoie l’utilisateur, ainsi que le Google-Bot, vers une autre page. Dans les deux cas, il faut considérer cela comme une page 404 défectueuse, ce que l’on appelle une erreur soft 404.

Dans cet article, nous vous expliquerons la bonne configuration d’une page d’erreur 404 à mettre en place, avec le code de statut HTTP 404 approprié. Nous ferons en fait la différence entre deux cas d’utilisation :

.htaccess et serveur Apache – configurer convenablement la page d’erreur

Selon si on utilise des fichiers .html ou .php pour le site Web ou si on est resté sur une structure dossier – une page d’erreur 404 est créée en mettant ce qui suit dans le fichier .htaccess :

Le chemin relatif vers le document d’erreur est ajouté au fichier .htaccess
Le chemin relatif vers le document d’erreur est ajouté au fichier .htaccess

Pour cela, ouvrez ou créez le fichier .htaccess et ajoutez-y le chemin relatif vers la page d’erreur. Il est important de d’abord créer la page d’erreur (404.html, par exemple) au premier niveau de votre site Web, ce qu’on appelle le répertoire racine.

ErrorDocument 404 /404.html

Le processus complet, étape par étape :

  • créez une page d’erreur (404.html ou 404.php) au premier niveau de votre site Web (répertoire racine)
  • ouvrez le fichier .htaccess – ou créez-le s’il y n’en a pas déjà (aussi dans le répertoire racine)
  • saisissez « ErrorDocument 404 », suivi du chemin relatif vers la page d’erreur
  • sauvegardez, et demandez une page qui n’existe pas, comme http://www.your-domain.com/98899351
  • maintenant vous devriez voir le contenu de la page d’erreur 404.html
  • utilisez httpstatus.io (par exemple) pour vérifier que c’est bien le code de statut HTTP 404 qui est retourné
Test du code de statut HTTP 404 pour une URL
La page inexistante https://www.sistrix.de/98899351 répond avec le code de statut HTTP 404

WordPress CMS – configurer convenablement la page d’erreur

Si on utilise le CMS de WordPress, il est facile de retourner le bon code d’erreur pour une page 404 – sous réserve que le thème qu’on utilise la prend en charge.

Beaucoup de thèmes WordPress, appelés designs ou modèles, utilisent un fichier 404.php dans le dossier du thème. Si vous n’arrivez pas à trouver ce fichier, configurez simplement une page d’erreur en utilisant .htaccess.

Ouvrez le fichier 404.php dans votre thème WordPress actif, et saisissez ce qui suit dans la première ligne :

Configurer le code de statut HTTP 404 pour une page d’erreur WordPress
Configurer le code de statut HTTP 404 pour une page d’erreur WordPress

La page d’erreur 404.php se trouve en général dans le répertoire du thème dans /wp-content/themes/nom-du-theme-actif/

<?php
header("HTTP/1.0 404 Not Found");
?>

Le processus complet, étape par étape :

  • trouvez et ouvrez la page d’erreur dans le dossier du thème WordPress (généralement « 404.php »)
  • ajoutez le code source PHP ci-dessus à la première ligne et sauvegardez le fichier
  • ouvrez une page qui n’existe pas, comme http://www.your-domain.com/98899351
  • maintenant vous devriez voir le contenu de la page d’erreur 404.php
  • utilisez httpstatus.io (par exemple) pour vérifier que c’est bien le code de statut HTTP 404 qui est retourné
Test du code de statut HTTP 404 pour une URL
La page inexistante https://www.sistrix.de/98899351 répond avec le code de statut HTTP 404

Pourquoi est-il important que les pages d’erreur retournent le bon code de statut HTTP ?

Un serveur devrait retourner le code de statut HTTP 404 (Not found) ou 410 (Gone) si une URL n’existe pas. S’il y a de vieux liens sur le Web, ou des liens incorrects sur votre site Internet, Google ne pourra comprendre que la page cible n’existe pas (ou plus) que si vous retournez un code de statut HTTP 404 ou 410.

C’est pourquoi il faut s’assurer que la page d’erreur de votre site Web répond toujours avec le bon code de statut HTTP 404. Rediriger les pages inexistantes vers la page d’accueil à l’aide d’une redirection 301 n’est pas recommandé, car cela peut poser des problèmes.

Vidéo explicative de Matt Cutts de Google sur le sujet

Comment Google gère-t-il les pages « not found » qui ne retournent pas une 404 ?

Comment Google gère-t-il les pages « non trouvées » qui retournent un code 200 au lieu d’un 404 ? Est-ce une forme de spam ? Google peut-il détecter cette incompatibilité de façon algorithmique ?

Informations supplémentaires sur le sujet :