Che cos’è un codice di stato HTTP?

Ogni volta che viene richiesto un sito, il Client (ad esempio un browser) e il server corrispondente si scambiano un “Codice di stato”, cioè una risposta per definire se tale richiesta è stata elaborata correttamente. Ad esempio, lo scambio di codici come HTTP 503 o 404 indica un problema. Vediamo più nello specifico cosa sono i codici di stato e il loro significato.

In questa pagina troverai numerosi link di approfondimento legati alla tematica dei codici di stato. Google ha anche pubblicato un articolo di approfondimento in cui parla di come Googlebot reagisce a determinati codici di errore.

Che cosa sono i codici di stato? Una panoramica

Ogni volta che clicchi su un risultato nelle SERP o digiti un URL nella barra del browser, stai dando inizio ad un processo di domanda e risposta.

Basandosi sulla struttura dell’URL corrispondente, il browser invierà infatti una richiesta ad uno specifico server dove teoreticamente dovrebbe trovarsi il sito desiderato. Il server risponderà se il sito è effettivamente disponibile e in che modo è possibile accedere alla pagina.

La domanda è accompagnata da una richiesta di trasmissione dei dati al Client che il server ha l’obiettivo soddisfare: di solito ci riesce, ma non sempre.

Ogni passo di questo processo di domanda e risposta viene scandito da un messaggio che descrive le condizioni attuali, cioè un “codice di stato HTTP”. La codifica è infatti basata sul protocollo di trasmissione HTTP.

Quanti codici di stato esistono e come vengono suddivisi?

Esistono più di 60 codici di stato HTTP differenti, ma l’utente medio ne conosce normalmente solo un paio, di cui il più famoso è il 404 (“Pagina non trovata”).

Una buona parte dei codici di stato è utile unicamente per la comunicazione tecnica tra Client e server, per cui avviene dietro le quinte.

I codici di stato HTTP sono divisi in cinque categorie e codificati in tre cifre:

  • 1xx: in questa categoria rientrano tutti i codici che riguardano una richiesta in corso. Il server informa il Client che la sua richiesta è stata ricevuta e che è in fase di elaborazione.
  • 2xx: questa categoria indica che la richiesta è stata elaborata con successo. Mentre il server e il Client si scambiano questa richiesta, vengono anche forniti i dati e il sito visualizzato correttamente. I codici 200 (OK) e 204 (No Content, cioè la richiesta è volontariamente fornita senza dati) non vengono normalmente notati dagli utenti.
  • 3xx: questa categoria indica che l’indirizzo richiesto è stato spostato su un altro tramite un reindirizzamento, in cui è possibile rintracciare i contenuti desiderati. In questo caso l’utente deve spesso confermare di voler proseguire con il reindirizzamento, per questioni di sicurezza.
  • 4xx: questa categoria riporta un problema da parte del Client. La pagina richiesta non è stata trovata all’indirizzo originario entro i termini previsti, oppure i contenuti non sono più esistenti o risultano vietati.
  • 5xx: questa categoria indica. Ad esempio, il server proxy non può stabilire un contatto con il server principale, oppure quest’ultimo impiega troppo tempo a rispondere alla richiesta del proxy.

Perché i codici di stato sono importanti per la SEO?

Tenere sotto controllo i codici di stato di un sito (eventualmente ottimizzandoli) è fondamentale nel campo dell’ottimizzazione OnPage. Grazie alla loro valutazione sarai in grado di capire se il server effettivamente funziona e se i contenuti sono accessibili senza difficoltà.

Siccome GoogleBot scansiona regolarmente un sito, tutti i contenuti e gli URL dovrebbero sempre essere disponibili. Infatti quelli non accessibili verranno rimossi dall’Indice di Google e non saranno più visibili nei risultati di ricerca.

Se vuoi saperne di più sul processo di scansione e d’indicizzazione di Google in caso di errori, ti consigliamo questo articolo. Per capire meglio come funziona un crawler, clicca invece qui.

Quali sono i codici di stato più conosciuti e a cosa servono?

Solo quando un codice di stato diventa un codice di errore è importante capire come intervenire: sapendo il significato di un codice potrai risolvere il problema senza aver bisogno di aiuti esterni.

I codici di stato HTTP più conosciuti sono:

  • 200 – OK

Significato: la risorsa richiesta (URL) è stata trovata sul server e può essere trasmessa al Client.

  • 301 – Moved Permanently (reindirizzamento)

Significato: l’URL richiesto dal Client è cambiato e il server reindirizza il client ad un altro URL in modo automatico. Il reindirizzamento 301 è il modo più sicuro per evitare codici di errore 404 durante una migrazione.

  • 302 – Moved Temporarily (reindirizzamento temporaneo)

Significato: l’URL del sito è stato temporaneamente reindirizzato. Si tratta di un reindirizzamento che può risolvere numerosi problemi, ma anche confondere l’utente, Google e alcuni software di sicurezza.

  • 400 – Bad Request

Significato: la richiesta del client non era corretta. Inserendo un nuovo URL o cancellando la Cache e i Cookies il problema è spesso risolto.

  • 401 – Unauthorized

Significato: il Client non si è identificato abbastanza per accedere a questa pagina. Ottimo per bloccare alcune directory di terze parti.

  • 403 – Forbidden

Significato: l’utente o il Client non dispongono dell’autorizzazione per accedere alla pagina. Questo codice di stato compare anche se desideri accedere solo a un URL codificato con HTTPS con HTTP.

Significato: la risorsa richiesta (URL) dal Client non può essere trovata sul server. Essendo uno dei codici di stato HTTP più visibili, il 404 ha dato vita a molte idee di design, ma dovrebbe essere risolto dal gestore del sito web il prima possibile (ad esempio attraverso i reindirizzamenti).

  • 503 – Service Unavailable (web server non raggiungibile)

Significato: il server non è al momento disponibile, per manutenzione o per sovraccarico, ad esempio. La soluzione è semplicemente: “Per favore riprova più tardi”.

1xx – Informational

  • 100 – Continue
  • 101 – Switching Protocols
  • 102 – Processing
  • 103 – Early Hints

La categoria 1xx è una risposta che indica che la richiesta è stata ricevuta e compresa. Questa categoria rappresenta un’anomalia, in quanto questa sezione dei codici di stato viene utilizzata raramente.

2xx – Success

  • 200 – OK
  • 201 – Created
  • 202 – Accepted
  • 203 – Non-Authoritative Information
  • 204 – No Content
  • 205 – Reset Content
  • 206 – Partial Content
  • 207 – Multi-Status
  • 208 – Already Reported
  • 226 – IM used

Ogni codice di stato della categoria 2xx significa che la richiesta è andata a buon fine. Sia il 200 che il 201 sono simili, ma il 201 fornisce al Browser un po’ più informazioni in quanto segnala che è stato creato qualcosa, mentre il 200 significa letteralmente “OK”. 200 e 201 sono trattati allo stesso modo dal processo di crawling e indicizzazione di Google.

Il 204 è un codice comune all’interno di questa categoria e significa che il server ha elaborato la richiesta ma non ha restituito alcun contenuto. Tuttavia ciò è intenzionale, perché l’intento era di non restituire alcun contenuto e quindi è ancora considerato un ritorno riuscito. Per il processo di crawling e indicizzazione di Google un 204 può essere visualizzato come un soft-404 nella Google Search Console.

3xx – Reindirizzamento

  • 300 – Multiple Choices
  • 301 – Moved Permanently – Google lo considera un forte segnale che l’obiettivo è canonico (in termini di indicizzazione).
  • 302 – Found – Google lo considera un debole segnale che l’obiettivo è canonico (in termini di indicizzazione).
  • 303 – See Other – Google lo considera un debole segnale che l’obiettivo è canonico (in termini di indicizzazione).
  • 304 – Not Modified – non ha alcuna influenza sull’indicizzazione, ma l’URL può essere ricalcolato per i segnali di ranking.
  • 305 – Use Proxy
  • 306 – Switch Proxy
  • 307 – Temporary Redirect – Google lo considera come un codice di stato 302.
  • 308 – Permanent Redirect – Google lo considera come un codice di stato 301.

I siti web sono complessi e le esigenze dei tuoi utenti o addirittura del tuo modello di business nel suo complesso sono in continua evoluzione. A volte una pagina è stata spostata o unita a un’altra pagina in modo che l’URL originario non porti più l’utente dove desidera essere. O forse il tuo nome di dominio è cambiato e non vuoi perdere clienti che stanno ancora visitando il vecchio URL, quindi chiedi invece al sito di reindirizzare gli utenti al tuo nuovo sito. Tali esempi sono quelli in cui viene utilizzata la categoria dei codici di stato 3xx.

304 è un codice di stato comune in questa categoria. Non si tratta tanto di reindirizzare un utente da un URL a un altro, quanto di memorizzare le informazioni nella cache. Se non è cambiato nulla nella pagina, il codice di stato 304 informa l’utente senza dover aumentare la quantità di dati, cosa che rallenterebbe il browser. Se una delle informazioni fosse cambiata, il codice di stato cambierebbe nella risposta 2xx corrispondente.

4xx – Client Error

  • 400 – Bad Request
  • 401 – Unauthorized
  • 402 – Payment Required
  • 403 – Forbidden
  • 404 – Not Found
  • 405 – Method Not Allowed
  • 406 – Not Acceptable
  • 407 – Proxy Authentication Required
  • 408 – Request Timeout
  • 409 – Conflict
  • 410 – Gone
  • 411 – Length Required
  • 412 – Precondition Failed
  • 413 – Payload Too Large
  • 414 – Uri Too Long
  • 415 – Unsupported Media Type
  • 416 – Range Not Satisfiable
  • 417 – Expectation Failed
  • 418 – I’m A Teapot
  • 421 – Misdirected Request
  • 422 – Unprocessable Entity
  • 423 – Locked
  • 424 – Failed Dependency
  • 425 – Too Early
  • 426 – Upgrade Required
  • 428 – Precondition Required
  • 429 – Too Many Requests
  • 431 – Request Header Fields Too Large
  • 451 – Unavailable For Legal Reasons

Ci sono ora alcuni punti da considerare per l’importante processo di crawling e indicizzazione di Google. Tutti gli errori 4xx mandano alla pipeline di indicizzazione messaggi che indicano che il contenuto non esiste e che l’URL sarà rimosso dall’indice. Gli errori 401 e 403 non dovrebbero venire utilizzati per influenzare il tasso di crawl. Il segnale 429 viene trattato come un errore del server (codice di stato 5xx. Vedi sotto).

La categoria 4xx è la più nota tra tutti i codici di stato HTTP. In sostanza, indica che c’è un errore sulla pagina del Client. Dal punto di vista dei webmaster i codici 4xx sono quelli a cui prestare particolare attenzione, perché creano una cattiva esperienza utente se l’utente non riesce a completare correttamente l’azione.

Per esempio il codice di stato “401 Unauthorized” significa che non è possibile accedere alla pagina, cosa che può succedere quando l’utente non ha alcun diritto di vedere i contenuti o non ha effettuato il login. “403 – Forbidden” significa che l’utente sta cercando di accedere a una pagina che richiede i diritti di amministratore.

Sia il codice di stato HTTP 401 che 403 fungono da Gatekeeper (controllori) virtuali, proteggendo il sito web da attività sospette. Il 401 significa tuttavia che l’utente non viene riconosciuto mentre il 403 riconosce l’utente ma sa che non possiede le credenziali d’accesso corrette per visualizzare i contenuti del sito web.

Il 404 è probabilmente il codice di stato HTTP più conosciuto. Il codice si stato indica che la pagina a cui l’utente vuole accedere non esiste.

Una menzione degna di nota nella categoria 4xx è il codice 418 “I’m a Teapot”. È da intendersi come un pesce d’aprile e significa “il server si rifiuta di fare il caffè perché è permanentemente una teiera”. Anche se questo codice di stato non viene mai utilizzato, Google gli ha dedicato una pagina.

5xx – Server Error

  • 500 – Internal Server Error
  • 501 – Not Implemented
  • 502 – Bad Gateway
  • 503 – Service Unavailable
  • 504 – Gateway Timeout
  • 505 – Http Version Not Supported
  • 506 – Variant Also Negotiates
  • 507 – Insufficient Storage
  • 508 – Loop Detected
  • 510 – Not Extended
  • 511 – Network Authentication Required

Gli errori 5xx si riferiscono a errori all’interno del server, ciò significa che non riesce a caricare perché non è possibile stabilire una connessione. Normalmente l’errore riguarda la piattaforma di hosting stessa ed è inaspettato.

Per esempio un 500 “Internal Server Error” potrebbe essere causato da un errore nel codice, ciò significa che la pagina non verrà caricata come dovrebbe o non caricherà affatto. Questo tipo di codice di stato aiuta a identificare il luogo del problema, cioè che si tratta di qualcosa all’interno del server e non di un errore dell’utente.

Per Google tutti gli errori 5xx, insieme all’errore 429, causano un rallentamento temporaneo della velocità di crawling della pagina e la riduzione è proporzionale al numero di errori riscontrati. Gli errori persistenti inviano segnali alle pipeline di indicizzazione che indicano che l’URL deve essere rimosso dall’indice.

Google dichiara, che gli URL indicizzati che sono irraggiungibili saranno rimossi dall’indice nel giro di pochi giorni.

Codici inufficiali

Altri codici di stato HTTP si muovono su una scala da 103 a 598. Questi codici non sono specificati da uno standard e quindi non rientrano in una categoria specifica.

Un esempio degno di nota è l’errore 522 “Connection Timed Out” di Cloudflare. Poiché Cloudflare funge da intermediario tra il server e l’utente, se si verifica un errore non sarà in grado di recuperare il risultato e il sito sarà inattivo finché l’errore non verrà corretto.

Conclusione

I codici di stato HTTP costituiscono una delle basi più importanti per l’interazione sul web. Anche se non c’è quasi nessun motivo per affrontarli nella vita di tutti i giorni, i codici più importanti ti aiutano sia come utente che come gestore del sito web a garantire un’accessibilità regolare dei siti web.

Video esplicativo di Google

In questo episodio di Ask Google Webmasters, John Mueller spiega cosa succede quando si attiva un reindirizzamento 301 e quali fattori determinano la canonizzazione.