Le premier chiffre partage déjà le problème : 4xx veut dire que la requête était mauvaise, 5xx que le serveur n'a pas su répondre à une requête raisonnable. Cela seul vous dit de quel côté regarder.

Les 4xx que vous rencontrerez

  • 400 — requête mal formée. Le plus souvent un en-tête ou un cookie trop gros, pas votre code.
  • 401 — non authentifié. Connectez-vous.
  • 403 — authentifié et pourtant non autorisé, ou le serveur ne peut pas lire le fichier.
  • 404 — introuvable. Si la page devrait exister, le suspect est la règle de réécriture, pas le fichier.
  • 413 — le fichier envoyé dépasse ce que le serveur accepte.
  • 429 — débit limité. Quelque chose demande trop souvent, parfois votre propre tâche cron.

Les 5xx

  • 500 — votre application a planté. Le message est dans le journal, pas sur la page.
  • 502 — ce qui se trouve derrière le serveur web a donné une réponse inutilisable, presque toujours PHP.
  • 503 — indisponible volontairement, ou à court de capacité.
  • 504 — ce qui se trouve derrière travaillait encore quand le serveur web a cessé d'attendre.

Lisez le vrai code, pas la page

curl -sI https://yourdomain.com/some/page | head -1
Une jolie page d'erreur renvoyée avec un 200 est pire que l'erreur : les moteurs l'indexent comme une vraie page, et une surveillance qui vérifie le 200 ne se déclenche jamais. Une page d'erreur doit renvoyer son propre code.

Les deux qui comptent pour la recherche

Une page qui a déménagé renvoie 301 et transmet son crédit à la nouvelle adresse. Une page qui a disparu renvoie 410 ou 404. Rediriger à la place chaque page supprimée vers l'accueil est lu comme un soft 404 et n'aide personne.

Un 200 au corps vide est un bogue à lui seul — le plus souvent PHP qui meurt sans écrire d'erreur. Regardez le journal plutôt que la page.