Codici di stato HTTP: 404, 500, 503 spiegati
10 min di lettura
Codici di stato HTTP: 404, 500, 503 spiegati
Tempo di lettura: 10 minuti
Definizione rapida: i codici di stato HTTP sono risposte di tre cifre che il tuo server invia a browser e motori di ricerca. Pensali come il modo in cui il server dice “OK, ecco la pagina” (200), “È stata spostata” (301), “Non trovata” (404) o “Sono guasto” (500).
Perché contano per la SEO: codici di stato sbagliati confondono i motori di ricerca, sprecano il crawl budget e fanno crollare il tuo posizionamento.
TLDR
I codici di stato HTTP dicono ai motori di ricerca come trattare le tue pagine. Usa 200 per le pagine normali, 301 per i reindirizzamenti permanenti e 404 per i contenuti mancanti. Errori comuni: usare 302 invece di 301 per gli spostamenti permanenti, restituire 200 per pagine che dovrebbero dare 404 e ignorare gli errori 500 del server. Risolvi subito gli errori 500: errori del server persistenti causano la deindicizzazione. Per la manutenzione del sito, usa 503 con l’header Retry-After, così Google sa che deve ricontrollare più tardi.
Le 5 categorie
| Intervallo | Significato | Esempi |
|---|---|---|
| 1xx | Informativo (raramente visibile) | 100 Continue |
| 2xx | Successo | 200 OK |
| 3xx | Reindirizzamento | 301, 302, 307 |
| 4xx | Errore del client (colpa dell’utente) | 404 Not Found, 403 Forbidden |
| 5xx | Errore del server (colpa tua) | 500 Internal Server Error, 503 Service Unavailable |
2xx: codici di successo
200 OK (successo)
Significato: “Tutto bene. Ecco la pagina che hai richiesto.”
Impatto SEO:
- La pagina può essere indicizzata
- La pagina può posizionarsi
- Nessuna azione necessaria
Quando lo vedrai:
- Caricamenti normali delle pagine
- Richieste API riuscite
- Immagini, CSS e JavaScript funzionanti
Cosa controllare:
curl -I https://example.com
# Output: HTTP/1.1 200 OK
3xx: codici di reindirizzamento
301 Moved Permanently
Significato: “Questa pagina è stata spostata per sempre. Aggiorna i tuoi segnalibri.”
Impatto SEO:
- Trasmette il 90-99% del valore dei link al nuovo URL
- Il vecchio URL scompare dai risultati di ricerca
- Il nuovo URL viene indicizzato
Quando usarlo:
- Migrazioni del sito
- Cambi nella struttura degli URL
- HTTP → HTTPS
- www → senza www (o viceversa)
Esempio:
Old: http://example.com/old-page
New: https://example.com/new-page
Status: 301 Moved Permanently
302 Found (reindirizzamento temporaneo)
Significato: “Questa pagina è stata spostata temporaneamente. Il vecchio URL tornerà.”
Impatto SEO:
- Trasmette poco o nessun valore dei link
- Il vecchio URL resta nei risultati di ricerca
- Il nuovo URL potrebbe non essere indicizzato
Quando usarlo:
- Test A/B
- Contenuti stagionali
- Pagine di manutenzione
Errore comune: usare 302 per gli spostamenti permanenti. Usa sempre 301, a meno che il reindirizzamento non sia davvero temporaneo.
307 Temporary Redirect (HTTP/1.1)
Significato: come 302, ma mantiene il metodo HTTP (POST, GET e così via).
Quando usarlo: per reindirizzare richieste POST (come l’invio di moduli).
308 Permanent Redirect (HTTP/1.1)
Significato: come 301, ma mantiene il metodo HTTP.
Quando usarlo: sostituto moderno di 301 in ambienti HTTP/2+.
4xx: codici di errore del client
404 Not Found
Significato: “Quella pagina non esiste. Sei sicuro di aver scritto bene?”
Impatto SEO:
- La pagina non verrà indicizzata
- Spreca crawl budget se è collegata internamente
- Perde il valore dei link dai backlink esterni
Quando è normale:
- L’utente ha digitato un URL sbagliato
- La pagina è stata eliminata legittimamente
Quando è un problema:
- Link interni che puntano a 404
- Pagine importanti che restituiscono 404
- Backlink esterni che finiscono su 404
Come trovare i 404:
- Google Search Console → Coverage → Errors
- Screaming Frog SEO Spider
- Controlla i log del server
Come risolvere:
- Link interni rotti → aggiorna i link
- Pagine eliminate con backlink → reindirizzamento 301 verso una pagina pertinente
- URL scritti male → reindirizzamento 301 verso la grafia corretta
- Contenuti davvero spariti → lascia il 404 (non reindirizzare tutto alla home page)
Soft 404 (falso 404)
Problema: la pagina non esiste, ma il server restituisce 200 OK invece di 404.
Esempio:
GET /this-doesnt-exist
Response: 200 OK
Body: "Sorry, page not found"
Impatto SEO:
- Google pensa che sia una pagina vera
- Spreca crawl budget
- Può essere segnalata come contenuto scarso
Come risolvere: restituisci il giusto codice di stato 404:
// PHP
header("HTTP/1.1 404 Not Found");
// Node.js
res.status(404).send('Not Found');
// Apache .htaccess
ErrorDocument 404 /404.html
403 Forbidden
Significato: “Questa pagina esiste, ma non hai il permesso di vederla.”
Impatto SEO:
- La pagina non verrà indicizzata
- Se applicato per errore a pagine pubbliche, queste spariranno dalla ricerca
Quando è corretto:
- Pagine protette da password
- Aree di amministrazione
- Contenuti riservati ai membri
Quando è un problema:
- Pagine pubbliche che restituiscono 403 (controlla i permessi del server)
- Googlebot bloccato da firewall o plugin di sicurezza
Come verificare:
curl -I https://example.com/admin
# Output: HTTP/1.1 403 Forbidden
410 Gone (eliminazione permanente)
Significato: “Questa pagina esisteva, ma non c’è più e non tornerà. Smetti di chiederla.”
Impatto SEO:
- Rimozione dai risultati di ricerca più rapida del 404
- Dice a Google “non perdere tempo a ricontrollare questo URL”
Quando usarlo:
- Prodotti fuori produzione senza sostituto
- Contenuti rimossi che non riporterai mai online
- Promozioni scadute
404 contro 410:
- 404: “Magari un giorno tornerà” (Google ricontrolla periodicamente)
- 410: “È sparita per sempre” (Google smette di controllare più in fretta)
5xx: codici di errore del server
500 Internal Server Error
Significato: “Qualcosa si è rotto da parte nostra. Non sappiamo cosa.”
Impatto SEO:
- La pagina non verrà indicizzata
- Se persiste, la pagina viene rimossa dai risultati di ricerca
- Spreca crawl budget
- Segnala a Google una scarsa qualità del sito
Cause comuni:
- Errori PHP (sintassi, limite di memoria)
- Problemi di connessione al database
- File
.htaccessdanneggiato - Conflitti tra plugin e temi (WordPress)
Come risolvere:
- Controlla i log degli errori del server (
/var/log/apache2/error.log) - Attiva la modalità debug di WordPress:
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); - Prova con i plugin disattivati
- Aumenta il limite di memoria di PHP
- Contatta l’assistenza del tuo hosting
502 Bad Gateway
Significato: “Il server ha ricevuto una risposta non valida da un altro server.”
Impatto SEO: lo stesso del 500
Cause comuni:
- Nginx non riesce a raggiungere PHP-FPM
- Server sovraccarico
- Firewall che blocca le connessioni
Come risolvere:
- Riavvia PHP-FPM/Nginx
- Controlla il carico del server (potrebbe servire un hosting più potente)
- Rivedi le regole del firewall
503 Service Unavailable
Significato: “Il server è temporaneamente fuori servizio. Riprova più tardi.”
Impatto SEO:
- Google riproverà più tardi
- Se persiste per giorni, la pagina può essere rimossa dalla ricerca
Quando è normale:
- Manutenzione programmata (mostra la pagina di manutenzione con 503)
- Server in aggiornamento
Quando è un problema:
- Sito fuori servizio senza preavviso
- Server sovraccarico che non regge il traffico
Come risolvere:
- Controlla lo stato del server con il tuo fornitore di hosting
- Attiva correttamente la modalità di manutenzione
- Passa a un hosting più potente se il traffico supera la capacità
Esempio di modalità di manutenzione:
<?php
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Retry-After: 3600'); // 1 hour
echo "We're performing scheduled maintenance. Back in 1 hour.";
?>
504 Gateway Timeout
Significato: “Il server ha impiegato troppo tempo a rispondere.”
Impatto SEO: lo stesso del 500
Cause comuni:
- Query lente al database
- Timeout di API esterne
- Server sovraccarico
Come risolvere:
- Ottimizza le query al database
- Aumenta
max_execution_timedi PHP - Aggiungi la cache
- Potenzia le risorse del server
Come i codici di stato influenzano la SEO
| Codice | Indicizzata? | Si posiziona? | Trasmette valore dei link? | Azione necessaria |
|---|---|---|---|---|
| 200 | Sì | Sì | Sì | Nessuna |
| 301 | Vecchio: No Nuovo: Sì |
Nuovo URL | Sì (circa 90-99%) | Verifica la destinazione del reindirizzamento |
| 302 | Vecchio: Sì Nuovo: Forse |
Vecchio URL | No | Passa a 301 se è permanente |
| 404 | No | No | No | Correggi o reindirizza se ha backlink |
| 410 | No | No | No | Adatto ai contenuti eliminati |
| 500 | No | No | No | Risolvi subito |
| 503 | Riprova | Temporaneamente | In pausa | Risolvi in fretta (ore, non giorni) |
Controllare i codici di stato
Strumenti per sviluppatori del browser
- Apri gli strumenti per sviluppatori (F12)
- Vai alla scheda Network
- Ricarica la pagina
- Guarda la colonna Status
Riga di comando (curl)
# Check status code
curl -I https://example.com
# Follow redirects
curl -L -I https://example.com
# Check multiple URLs
for url in url1 url2 url3; do
curl -I -s $url | grep HTTP
done
Strumenti online
- Verifica codici di stato HTTP
- Verifica reindirizzamenti
- GTmetrix (mostra i codici di stato di tutte le risorse)
Controllo in blocco (strumenti SEO)
- Screaming Frog SEO Spider: scansiona l’intero sito, filtra per codice di stato
- Ahrefs Site Audit: mostra 404, 500 e catene di reindirizzamenti
- Google Search Console: il report Coverage mostra i problemi di indicizzazione
Scenari comuni
Scenario 1: pagina prodotto eliminata
Approccio sbagliato:
Old product URL: 404 Not Found
Risultato: valore dei link perso, esperienza utente scadente
Approccio migliore:
Old product URL → 301 → Similar product or category page
Risultato: mantiene i posizionamenti, esperienza utente migliore
Scenario 2: migrazione del sito
Sbagliato:
oldsite.com/page → 302 → newsite.com/page
Risultato: i vecchi URL restano nei risultati di ricerca
Giusto:
oldsite.com/page → 301 → newsite.com/page
Risultato: i nuovi URL sostituiscono i vecchi nei risultati di ricerca
Scenario 3: modalità di manutenzione
Sbagliato:
example.com → 404 Not Found (site offline)
Risultato: Google pensa che il sito sia rotto e può deindicizzarlo
Giusto:
example.com → 503 Service Unavailable
Retry-After: 3600
Risultato: Google sa che è temporaneo e riproverà
Scenario 4: conflitto tra plugin (WordPress)
Sintomo: errori 500 casuali sulle pagine di amministrazione
Diagnosi:
- Rinomina
/wp-content/plugins/in/wp-content/plugins-disabled/ - Se il sito funziona, rimetti il nome originale e disattiva i plugin uno alla volta
- Individua il plugin in conflitto
Soluzione: aggiorna o sostituisci il plugin problematico
Cosa controlla Surmado
Site Audit cerca:
- Errori 404 sui link interni
- Errori 500/503 (problemi del server)
- Catene di reindirizzamenti (più 301 di fila)
- Reindirizzamenti 302 che dovrebbero essere 301
- Soft 404 (stato 200 su pagine “non trovata”)
Riferimento rapido
Vanno bene per la SEO:
- 200 OK
- 301 (per gli spostamenti permanenti)
- 410 (per i contenuti eliminati)
Richiede attenzione:
- 302 (passa a 301 se è permanente)
- 404 (correggi i link interni, reindirizza se ha backlink)
Da risolvere subito:
- 500 (errori del server)
- 503 (dovrebbe risolversi in poche ore)
- Soft 404 (restituisci un vero 404)
→ Correlati: Checklist di implementazione GEO per sviluppatori | Guida completa a llms.txt | Risoluzione dei problemi comuni