Chaque fois qu'un navigateur ou un robot de moteur de recherche demande une page à votre serveur, celui-ci répond d'abord par un nombre à trois chiffres, avant d'envoyer quoi que ce soit d'autre. Ce nombre, c'est le code de statut HTTP. Il est invisible pour la plupart des visiteurs, mais c'est lui qui décide si la page s'affiche, si elle est gardée en cache et si Google la conserve dans son index.
Comprendre ces codes, c'est passer de « je ne sais pas pourquoi cette page a disparu de Google » à « je sais exactement quoi réparer ». Cette page présente les codes qui comptent vraiment quand on gère un site, classés par famille, avec la conséquence pratique de chacun. Leur comportement est défini par l'IETF dans la RFC 9110 (HTTP Semantics), et la liste officielle est tenue par l'IANA. Ce qui suit en est la lecture pratique.
Le premier chiffre donne la catégorie. Une fois les cinq familles connues, aucun code inconnu n'est complètement opaque.
| Famille | Signification | Faut-il s'inquiéter ? |
|---|---|---|
| 1xx | Information : le serveur a reçu la demande et continue de la traiter. | Non, vous ne les verrez presque jamais. |
| 2xx | Succès : la demande a abouti et le contenu a été envoyé. | Non, c'est l'état normal. |
| 3xx | Redirection : la ressource se trouve ailleurs. | Seulement en cas de longues chaînes ou de boucles. |
| 4xx | Erreur du client : la demande ne peut pas aboutir, le plus souvent parce que l'adresse est fausse. | Oui. C'est la famille du 404. |
| 5xx | Erreur du serveur : votre serveur n'a pas réussi à traiter une demande valide. | Oui, et en urgence. |
| Code | Nom | En pratique |
|---|---|---|
| 200 | OK | La page existe et a été envoyée. C'est ce que doit renvoyer chaque page listée dans votre sitemap. |
| 204 | No Content | La demande a réussi mais il n'y a rien à afficher. Fréquent pour les formulaires traités en JavaScript. |
| 206 | Partial Content | Le serveur n'a envoyé qu'une partie du fichier, par exemple quand un visiteur reprend un téléchargement ou avance dans une vidéo. |
Une redirection n'est pas une erreur, mais une mauvaise redirection peut faire perdre des positions sans bruit. La différence entre 301 et 302 est le point le plus mal compris de cette famille ; elle est détaillée dans notre guide sur les redirections 301 et 302.
| Code | Nom | En pratique |
|---|---|---|
| 301 | Moved Permanently | La page a une nouvelle adresse pour toujours. Les moteurs transfèrent les signaux de l'ancienne adresse vers la nouvelle et finissent par oublier l'ancienne. À utiliser quand on renomme ou réorganise une page. |
| 302 | Found | Le déplacement est temporaire. Les moteurs gardent l'ancienne adresse dans l'index. Utiliser un 302 pour un déménagement définitif est une erreur fréquente et coûteuse. |
| 303 | See Other | Envoie le visiteur vers une autre page après l'envoi d'un formulaire, pour qu'un rechargement ne renvoie pas le formulaire. |
| 304 | Not Modified | Le visiteur a déjà le fichier en cache et il n'a pas changé. Le serveur n'envoie rien, la page se charge plus vite. |
| 307 | Temporary Redirect | Même intention qu'un 302, avec la garantie que la méthode de la requête ne change pas. |
| 308 | Permanent Redirect | Même intention qu'un 301, avec la même garantie sur la méthode. |
| Code | Nom | En pratique |
|---|---|---|
| 400 | Bad Request | La requête est mal formée. Souvent un paramètre d'URL cassé ou un cookie corrompu. |
| 401 | Unauthorized | Une authentification est nécessaire : le visiteur doit se connecter. |
| 403 | Forbidden | Le serveur a compris mais refuse de servir la ressource : droits d'accès, dossier protégé ou pare-feu. Beaucoup de serveurs répondent 403 aux outils automatiques tout en servant normalement la page à un navigateur. C'est pourquoi Adieu404 ne compte pas les 403 comme des liens brisés. |
| 404 | Not Found | L'adresse ne correspond à rien. L'erreur la plus courante du web, celle que ce site est fait pour trouver. |
| 405 | Method Not Allowed | La page existe mais n'accepte pas ce type de requête, par exemple un POST sur une page qui n'accepte que GET. |
| 408 | Request Timeout | Le client a mis trop de temps à envoyer sa requête et le serveur a cessé d'attendre. |
| 410 | Gone | La page a existé et a été supprimée volontairement, sans remplaçant. Plus net qu'un 404 : l'adresse sort plus vite de l'index. |
| 429 | Too Many Requests | Trop de requêtes en peu de temps : la limitation de débit du serveur fait son travail. |
Les deux finissent par retirer la page des résultats, mais ils ne disent pas la même chose. Un 404 signifie « je ne sais pas de quoi vous parlez », ce qui laisse ouverte la possibilité d'un retour de la page. Un 410 signifie « cela a existé, c'est parti, inutile de redemander ». Si vous avez supprimé un article exprès et que rien ne le remplacera, le 410 est la réponse honnête. Si une page a disparu à cause d'une erreur ou d'un mauvais lien, gardez le 404 et corrigez la cause, comme expliqué dans notre guide pour corriger une erreur 404.
| Code | Nom | En pratique |
|---|---|---|
| 500 | Internal Server Error | Quelque chose a planté de votre côté : erreur fatale PHP, règle incorrecte dans le .htaccess, base de données qui ne répond pas. Regardez d'abord le journal d'erreurs du serveur. |
| 501 | Not Implemented | Le serveur ne prend pas en charge la fonction demandée. |
| 502 | Bad Gateway | Un proxy ou un répartiteur de charge placé devant votre site a reçu une réponse invalide du serveur. |
| 503 | Service Unavailable | Serveur surchargé ou en maintenance. C'est le bon code pendant une maintenance prévue : les moteurs reviendront plus tard au lieu de retirer vos pages. |
| 504 | Gateway Timeout | Un proxy a attendu trop longtemps le serveur. Souvent une requête de base de données lente ou un service extérieur qui ne répond plus. |
Les erreurs 5xx sont plus graves que les 404. Une page manquante est un petit problème. Un site qui répond 500 ou 503 partout indique aux moteurs de recherche qu'il n'est pas fiable, et l'exploration ralentit jusqu'à ce que la confiance revienne.
Pas besoin de logiciel particulier. Dans n'importe quel navigateur récent, appuyez sur F12 pour ouvrir les outils de développement, allez dans l'onglet Réseau, puis rechargez la page. La première ligne de la liste correspond à votre page, et la colonne Statut affiche le code. Un clic sur une ligne montre tous les en-têtes de la réponse.
Depuis un terminal, une seule commande donne la même information :
curl -I https://www.exemple.fr/une-page.html
La première ligne du résultat contient le code. Ajoutez l'option -L pour suivre les redirections et voir toute la chaîne : c'est le moyen le plus rapide de repérer une redirection qui passe par trois adresses avant d'arriver.
Vérifier les codes page par page fonctionne pour quelques adresses. Sur un site de plusieurs centaines de pages, la seule méthode réaliste est d'explorer tout le site et de relever chaque réponse. C'est ce que fait le vérificateur de liens brisés : il suit vos liens internes, note le code renvoyé par chaque adresse et signale celles des familles 4xx et 5xx, avec la page où se trouve le lien fautif.
Les codes HTTP disent si une page a été livrée, pas si son code HTML est correct ni si ses balises sont bien remplies. Pour vérifier les balises title, description et les autres métadonnées de vos pages, lesmetatags.fr propose plusieurs outils gratuits en français. Les termes techniques de cette page sont définis dans le glossaire.