La prima cifra divide già il problema: 4xx vuol dire che la richiesta era sbagliata, 5xx che il server non è riuscito a rispondere a una richiesta ragionevole. Solo questo ti dice da quale parte guardare.

I 4xx che incontrerai

  • 400 — richiesta malformata. Di solito un'intestazione o un cookie troppo grandi, non il tuo codice.
  • 401 — non autenticato. Accedi.
  • 403 — autenticato e comunque non autorizzato, oppure il server non riesce a leggere il file.
  • 404 — non trovato. Se dovrebbe esistere, l'indiziata è la regola di riscrittura, non il file.
  • 413 — quello che carichi è più grande di quanto il server accetti.
  • 429 — limite di frequenza. Qualcosa chiede troppo spesso, a volte il tuo stesso cron.

I 5xx

  • 500 — la tua applicazione è andata in errore. Il messaggio è nel log, non sulla pagina.
  • 502 — ciò che sta dietro al server web ha dato una risposta inservibile, quasi sempre PHP.
  • 503 — indisponibile di proposito, oppure a corto di capienza.
  • 504 — ciò che sta dietro stava ancora lavorando quando il server web ha smesso di aspettare.

Leggi il codice vero, non la pagina

curl -sI https://yourdomain.com/some/page | head -1
Una bella pagina d'errore restituita con un 200 è peggio dell'errore stesso: i motori la indicizzano come pagina vera, e un monitoraggio che controlla il 200 non scatta mai. Una pagina d'errore deve restituire il proprio codice.

I due che contano per la ricerca

Una pagina che si è spostata restituisce 301 e passa il proprio credito al nuovo indirizzo. Una pagina che non c'è più restituisce 410 oppure 404. Reindirizzare invece ogni pagina rimossa alla home viene letto come un 404 morbido e non aiuta nessuno.

Un 200 con il corpo vuoto è un difetto a sé — di solito è PHP che muore senza scrivere un errore. Guarda il log invece della pagina.