Http Status Code (Codici di Stato HTTP)

Status Code: cosa sono e significato dei Codici di Stato HTTP

Verificare gli status code delle pagine del nostro sito è fondamentale affinché siano indicizzate correttamente dai motori di ricerca. Vediamo cosa sono i codici di stato HTTP e le migliori pratiche SEO per gestirli correttamente.
In questa guida completa scoprirai:

Le informazioni sono tratte dal corso SEO online professionale.

Cosa sono gli Status Code HTTP

Gli status code (o response codes) indicano se una specifica richiesta HTTP è stata completata correttamente. Sono parte integrante del protocollo HTTP (acronimo di Hypertext Transfer Protocol), il protocollo usato da client e server per comunicare e scambiare informazioni.

Praticamente, quando il client (un browser o un crawler come Googlebot) richiede una risorsa ad un server, quest’ultimo invia in risposta uno status code (o codice di stato) che è formato da tre cifre.

Esempio Status Code HTTP

Le risposte HTTP inviate dai server generalmente consistono di due parti:

  1. header;
  2. body payload.

Gli headers contengono il response code HTTP e altre informazioni, come ad esempio le istruzioni su quanto a lungo il client dovrebbe conservare la risposta in cache.

Gli headers non sono mostrati all’utente, ma forniscono istruzioni al client su come gestire la risposta e come mostrare il body payload.

Quando nella risposta HTTP è presente un body payload, viene usato per fare il rendering e mostrare la pagina all’utente.

Tipologie di Status Code

Esistono cinque categorie di status code e ognuna trasmette un diverso tipo di messaggio:

  • 1xx – Risposte Informative: “abbiamo ricevuto la tua richiesta e la stiamo processando”;
  • 2xx – Risposte di Successo: “abbiamo ricevuto con successo la tua richiesta: ecco quello che hai chiesto”;
  • 3xx – Risposte di Reindirizzamento: “è richiesta un’azione ulteriore per soddisfare questa richiesta”;
  • 4xx – Risposte agli Errori del Client: “La richiesta non può essere soddisfatta”;
  • 5xx – Risposte agli Errori del Server: “Stiamo avendo problemi a processare la tua richiesta, che comunque è valida”.

Status code 1xx

Gli status code 1xx sono di tipo informativi e indicano che una richiesta è stata ricevuta e compresa, ma non è ancora stata processata.

I codici di stato della categoria 1xx si trovano abbastanza raramente e per questo motivo non saranno approfonditi.

Status code 2xx

Gli status code 2xx indicano richieste che hanno avuto successo e tutto è andato secondo i piani. Dal punto di vista SEO, lo status code della categoria 2xx più importante da conoscere è il 200.

Status code 200 OK

Quando un server invia lo status code 200, comunica al client che la richiesta è stata ricevuta con successo e fornisce in risposta il contenuto richiesto. Lo status code 200 comunica quindi che tutto è andato bene.

Si ha un uso non corretto dello status code 200 quando, ad esempio, viene richiesta una pagina che non esiste e viene restituita come risposta uno status code 200 anziché un codice 404 o 410.

Nel gergo di Google Search Console questo fenomeno viene definito come errore soft 404.

Status code 3xx

Gli status code 3xx indicano che è richiesta un’ulteriore azione. La richiesta è stata ricevuta dal server, ma al momento non può essere soddisfatta.

Quando il client riceve uno status code 3xx, deve inviare una nuova richiesta alla location che il server ha restituito con il redirect. Gli status code che descriviamo in questa sezione sono tutti redirect.

Questo succede quando viene fatta una richiesta per l’URL A, ma l’URL A viene rediretto all’URL B. Quindi la richiesta dovrebbe in realtà essere fatta direttamente all’URL B.

In questa sezione vediamo i seguenti status code 3xx, molto importanti per la SEO:

301: Moved Permanently

Lo status code 301 (o redirect 301) comunica che una risorsa è stata spostata in modo permanente in un’altra location. Pertanto ogni richiesta dovrà essere rediretta ad un altro URL.

Ricorda che i browser salveranno in cache i redirect 301 così se in futuro la pagina dovesse venire richiesta nuovamente verrà mostrata più velocemente.

Il codice 301 viene usato, ad esempio, quando un sito ha migrato da HTTP a HTTPS e ogni URL in HTTP è rediretto alla sua versione in HTTPS. I redirect 301 sono essenziali per il successo delle migrazione SEO dei siti.

Invece, non è corretto usare il response code 301 quando una pagina è temporaneamente inaccessibile.

302: Found / Moved temporarily

Lo status code 302 (o redirect 302) comunica che una risorsa è stata temporaneamente spostata in un’altra location.

A causa della sua natura temporanea, nessun segnale di popolarità o di rilevanza viene trasmesso dall’URL di partenza all’URL di destinazione e l’URL rediretto continuerà a posizionarsi su Google.

Dopo un periodo di tempo prolungato, i redirect 302 vengono considerati come dei redirect 301 dai motori di ricerca (in linea di massima, diciamo che potrebbe volerci un mese prima che un redirect 302 venga considerato come un 301 da parte di Google).

Esempio di uso corretto del redirect 302: poniamo il caso che tu stia gestendo una campagna su Google Ads e vuoi che per un breve periodo di tempo i visitatori atterrino su URL B anziché su URL A. Quando la campagna sarà finita, andrai subito a rimuovere il redirect 302.

Esempio di uso scorretto del redirect 302: poniamo che tu stia gestendo una migrazione e decidi di implementare redirect 302 al posto dei redirect 301. In questo caso i segnali di ranking non verranno trasmessi dai vecchi URL ai nuovi e questo inciderà in modo negativo sul posizionamento.

303: See Other

Lo status code 303 (o redirect 303)  comunica che il server sta redirezionando l’URL richiesto verso un altro URL.

Ad esempio, può essere usato  per evitare che gli utenti inviino per sbaglio il form due volte quando usano il pulsante “indietro” del browser. Infatti, il redirect 303 comunica che bisognerebbe fare una richiesta di follow-up all’URL temporaneo usando il metodo GET.

E’ corretto usare i redirect 303 per i form, ma non è corretto usarli in altre circostanze. Infatti, i response codes 303 trasmettono link equity, ma occorre parecchio tempo affinché questo avvenga.

È quindi scorretto usare un redirect 303 al posto di un 301 quando un contenuto viene spostato in via definitiva.

304: Not modified

Lo status code 304 (o redirect 304), comunica che la risorsa non è stata modificata dall’ultima volta che è stata richiesta e pertanto non verrà reinviata al client, il quale dovrà usare la versione salvata in cache.

Ad esempio, poniamo di aver visitato una pagina il giorno 01 Gennaio 2020 alle ore 9:00. Il giorno 02 Gennaio visitiamo la pagina di nuovo e vogliamo chiedere al server se la pagina ha subito delle modifiche dall’ultima volta che l’abbiamo visitata.

In questo caso, possiamo farlo aggiungendo la seguente condizione alla richiesta:

  • If-Modified-Since: Mon, 10 Mar 2020 09:00:00 GMT

È pertanto una best practice fornire lo status code 304 agli utenti quando il contenuto non è cambiato. Dal punto di vista SEO, lo status code 304 offre benefici soprattutto quando si parla di siti di grandi dimensioni (dalle 100.000 pagine a salire) come gli E-Commerce, Marketplace e i grandi portali editoriali.

307: Temporary redirect / Internal Redirect

Lo status code 307 (o redirect 307) viene utilizzato anche come reindirizzamento interno nei casi in cui il browser sappia che è applicato il protocollo HTTPS.

Il browser conosce questa informazione o perché gli è stato comunicato durante le richieste precedenti o perché il dominio si trova nell’elenco Preload HSTS.

L’elenco Preload HSTS è un elenco di domini (condiviso tra i vari browser) che utilizzano il protocollo HTTPS. Anche se un utente può richiedere la versione HTTP di un URL, il browser utilizzerà il redirect 307 interno per richiedere la versione HTTPS, evitando così richieste non necessarie e non sicure.

È dunque corretto usare il redirect 307 quando si vuole eseguire un redirect interno per assicurarsi che la connessione rimanga protetta.

Invece, è scorretto usare il 307 quando un contenuto viene spostato in modo permanente, poiché in questi casi bisogna utilizzare il redirect 301.

308: Permanent Redirect

Il codice di stato 308 (o redirect 308) è l’equivalente HTTP 1.1 del redirect 301 e non consente di modificare il metodo di richiesta da POST a GET.

Dal punto di vista SEO, ci sono due considerazioni da fare:

  1. Al momento non è chiaro quanta page authority venga trasmessa con lo status code 308, quindi se vuoi spostare il contenuto in modo permanente ti consiglio di utilizzare il 301.
  2. Il redirect 308 non è supportato da Edge su Windows 7 e Windows 8.1: sconsiglio quindi di usarlo poiché causerebbe un’esperienza utente scadente.

Per le ragioni appena citate, non è consigliabile usare il response code 308.

Status Code 4xx

I codici di stato HTTP 4xx indicano che si è verificato un errore lato client. Gli errori possono essere principalmente di tre tipi:

  1. Il client non è autorizzata a richiedere una pagina;
  2. Sono state richieste pagine inesistenti;
  3. Sono state fatte troppe richieste.

In questa sezione tratteremo i seguenti status code 4xx:

401: Unauthorized

Il codice di stato 401 è un codice di errore e comunica che l’autenticazione HTTP non è riuscita.

Per accedere alla pagina richiesta potrebbe essere necessario il nome utente e la password oppure non è consentito l’accesso in base all’ indirizzo IP.

In genere vedrai lo status code 401 quando i crawler tentano di accedere agli ambienti di staging e hai implementato l’autenticazione HTTP per impedire l’accesso.

In questi casi visualizzare il response code 401 è corretto, poiché è preferibile evitare l’indicizzazione dell’ambiente di staging che deve rimanere riservato.

Un tipico esempio di uso errato del codice di stato HTTP 401 si ha quando lo si usa al posto del 403 per indicare che l’autorizzazione non è riuscita.

403: Forbidden

Il codice di stato HTTP 403 (o errore 403) indica che è vietato richiedere un determinato URL.

Questo status code viene comunemente utilizzato per impedire ai crawler di effettuare richieste dopo un comportamento scorretto. Viene inoltre restituito nel caso in cui il client fornisca le credenziali di accesso errate.

È corretto quindi usare il response code 403 quando i crawler richiedono troppi URL al tuo sito e tu rispondi con il codice 403 per fermarli.

Invece, è sbagliato usare lo status code 403 al posto del 401 quando vogliamo indicare che un client non è autorizzato ad effettuare richieste.

404: Not Found

Il codice di stato 404 (o errore 404) indica che la risorsa richiesta non è stata trovata. E’ molto comune, in quanto lo riscontriamo quando clicchiamo su un link non funzionante.

Potrebbe capitare che delle pagine esistenti restituiscano “errore 404” a causa di un bug o in seguito a problemi di manutenzione del server. Avere URL che restituiscono 404 è negativo se non hai rimosso effettivamente il contenuto.

Sebbene i motori di ricerca non eliminino subito dall’indice gli URL che restituiscono status code 404, potrebbero farlo in un secondo momento se tale response code persiste per molto tempo.

Linkare pagine 404, oltre che per i motori di ricerca, è negativo anche dal punto di vista dell’esperienza utente, in quanto creano una sorta di vicolo cieco per i visitatori.

È quindi corretto usare il response code 404 se l’URL richiesto non esiste più o non è mai esistito.

Invece, è scorretto usare il 404 per pagine esistenti e che dovrebbero funzionano bene.

410: Gone

Il codice di stato 410 (o errore 410) indica che l’URL richiesto è stato rimosso in modo permanente. Ciò significa che l’URL esisteva in precedenza, ma è stato successivamente rimosso e non sarà più ripristinato.

I motori di ricerca sono in grado di rimuovere rapidamente gli URL dal loro indice quando viene restituito lo status code 410. Proprio per tale motivo l’utilizzo corretto del 410 può incidere molto sui risultati di una campagna SEO.

Quindi è corretto usare il response code 410 per tutti gli URL che sono stati rimossi in modo esplicito e non saranno ripristinati, mentre è scorretto utilizzarlo per URL temporaneamente non disponibili.

429: Too many Requests

Il codice di stato 429 (o errore 429) indica che un client ha inviato troppe richieste ad un server in un determinato lasso di tempo.

Se le richieste continuano ad arrivare nonostante sia stato comunicato il response code 429, il server potrebbe decidere di iniziare a rispondere con un codice 403.

Se il server continua a restituire lo status code 429 per un periodo di tempo molto prolungato, Google potrebbe rimuovere quel contenuto dall’indice.

Questo è uno dei tanti motivi per cui ti devi sempre assicurare investire in un hosting solido e che restituisca sempre i giusti status code.

Un tipico uso corretto del codice di stato HTTP 429 si ha quando un crawler richiede troppi URL in un periodo di tempo breve.

In questo caso, con un codice di stato HTTP 429, il server invierà un chiaro segnale a Googlebot di dovrebbe rallentare.

Nota bene: per combattere i crawler spam è però più corretto usare il codice 403 e non il 429.

430: Request Header Fields Too Large (Shopify)

Lo status code 430 non è un codice di stato ufficiale. Questo response code viene utilizzato erroneamente da Shopify che ha fatto confusione con l’uso degli status code e invia erroneamente un codice di stato 430 quando dovrebbe restituire un 429.

Chi eroga SEO per Shopify a livello professionale (proprio come me), potrà confermartelo.

451: Unavailable for Legal Reasons

Il codice di stato HTTP 451 (o errore 451) indica che l’URL richiesto non è disponibile per motivi legali.

Quando viene erogato questo status code, dovrebbe essere fornita anche una spiegazione che specifichi perché la risorsa non è disponibile e la legislazione o il regolamento di riferimento.

Il response code 451 può essere utilizzato quando qualcuno ha copiato in modo palese il contenuto di un altro sito e successivamente gli è stato ordinato di rimuoverlo.

Invece, non è corretto utilizzare lo status code 451 quando utenti provenienti dalla European Economic Area (EEA) richiedono risorse da siti che si trovano al di fuori dell’EEA, per il timore di ripercussioni che potrebbero scaturire dal GDPR.

Status Code 5xx

I codici di stato 5xx vengono restituiti quando i client fanno richieste valide, ma i server non possono restituirle per qualche motivo. Ad esempio, il sito potrebbe essere troppo occupato o temporaneamente non disponibile per manutenzione.

Se i motori di ricerca ricevono errori 5xx durante la scansione di un sito web, potrebbero mettere in atto una serie di azioni, nessuna delle quali è positiva dal punto di vista SEO:

  1. Potrebbero pensare che il server non sia in grado di gestire così tante richieste, quindi rallenteranno la scansione. Ciò significa che assegneranno un crawl budget inferiore.
  2. Possono ridurre la visibilità organica delle pagine o rimuoverle completamente dall’indice, poiché ritengono che i problemi siano persistenti.

In questa sezione tratteremo i seguenti codici di stato:

500: Internal Server Error

Il codice di stato 500 (errore 500), indica che il server ha riscontrato problemi durante l’elaborazione della richiesta, ma non è in grado di dichiarare il motivo.

È sbagliato usare lo status code 500 quando il server è effettivamente a conoscenza del problema e avrebbe pertanto dovuto rispondere con un suggerimento più specifico.

503: Service Unavailable

Lo status code 503 (o errore 503) indica che il server è temporaneamente non disponibile e sarà nuovamente disponibile in seguito. Ciò può essere dovuto alla manutenzione programmata (sebbene sconsiglio vivamente di farlo) o se il server è troppo occupato.

Come accade con il codice 429, Google può rimuovere dall’indice i contenuti per i quali sta ricevendo response code 503 per un periodo di tempo prolungato.

Pertanto, in fase di consulenza SEO, consiglio sempre di includere un valore “Retry after” nella risposta nel caso in cui decidiamo di utilizzare questo status code.

È corretto usare il codice di stato 503 quando il server è troppo occupato e non è in grado di elaborare immediatamente la richiesta del client.

È invece scorretto usare il codice di stato HTTP 503 con un valore “Retry after” troppo lontano nel passato o nel futuro.

524: A timeout occurred (Cloudflare)

Il codice 524 non esiste ufficialmente, ma è stato creato da Cloudflare e viene inviato quando scade l’origine della richiesta. Si tratta di un problema relativo esclusivamente al server di Cloudflare.

Come verificare gli status code?

Puoi verificare gli status code utilizzando:

  1. strumenti integrati nel tuo browser;
  2. con lo strumento Controllo URL di Google Search Console;
  3. con un emulatore di crawler (come Screaming Frog o Visual SEO Studio).

Le prime due modalità indicate possono andare bene se si devono verificare gli status code di singole pagine, ma sono inefficaci se dobbiamo controllare un grosso numero di URL.

Verificare gli status code tramite gli strumenti integrati del tuo browser

Questa procedura è simile per tutti i browser. Ogni browser è dotato di strumenti integrati:

  • Google Chrome: apri Chrome DevTools e seleziona la tab “Network” per visualizzare l’attività di network.
  • Firefox: apri Inspector e seleziona la tab “Network” per vedere l’attività di Network.
  • Safari: apri Web Inspector e seleziona la tab “Network” per vedere l’attività di Network.
  • Edge: apri Developer Tools e seleziona la tab “Network” per vedere l’attività di Network.

Status Code tramite lo strumento per sviluppatori di Chrome

Un’alternativa alle soluzioni integrate sono le estensioni del browser, come il popolare Redirect Path di Ayima per Google Chrome.

Verificare lo status code in Google Search Console

Con Google Search Console puoi verificare lo status code di un URL utilizzando lo strumento Controllo URL:

  • Inserisci l’URL da analizzare e attendi l’analisi;
  • Ottenuta la risposta clicca su “Visualizza pagina sottoposta a scansione”;
  • Infine clicca su “Ulteriori Informazioni” e vedrai lo status code.

Status Code tramite Google Search Console

Bisogna conoscere gli status code per fare SEO?

Dato che  i crawler dei motori di ricerca e i siti comunicano tramite il protocollo HTTP, è fondamentale per un consulente SEO conoscere bene gli status code più comuni per diagnosticare e risolvere i problemi SEO velocemente.

Quando i crawler richiedono le pagine del tuo sito, è necessario che venga restituito status code HTTP 200 (OK). Durante la loro scansione non devono individuare pagine che restituiscono status code 5xx e 4xx e possibilmente pochi 3xx.

Se non  conosci questi aspetti tecnici e come gestirli correttamente, potrai fare SEO solo a livello amatoriale e non potrai mai diventare un SEO Specialist.

Se ritieni che sia preferibile ricevere un supporto professionale, puoi visitare la pagina dedicata ai servizi SEO. Mentre per dubbi o domande sull’argomento, non esitare a scriverle nei commenti.

Valentino Mea

SEO Specialist e consulente SEM certificato Google Ads e Analytics. Dal 2010 fornisce servizi di consulenza a web agency, proprietari di siti e-commerce e start-up. Dal Novembre 2013 condivide tutorial pratici e la sua esperienza nel settore su questo blog.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Libro SEO

Libro SEO per E-Commerce PRO di Valentino Mea

Scopri il primo libro su come ottimizzare siti e-commerce per aumentare il posizionamento su Google e trasformare gli utenti in clienti. Puoi trovarlo su Amazon.

I più letti del mese

Iscriviti alla Newsletter!

Ti aggiorni gratuitamente su SEO, SEM e Web Analytics.

Valentino Mea Consulente SEO e SEM

Sono Valentino Mea, esperto di Search Marketing a livello professionale dal 2010. Supporto Imprenditori e Liberi Professionisti nello sviluppare progetti web seri, sostenibili e redditizi, attraverso l’erogazione di:

  • Servizi SEO e SEM
  • Consulenza Oraria
  • Coaching Individuali

Se vuoi sviluppare un business online di successo e vuoi essere seguito da un consulente SEO e SEM affermato, non esitare a contattarmi!

Contattami

Copyright © 2013 - 2020 · Valentino Mea Srls rating 5.0/5 su 20 recensioni · C.F. / P.iva: 04373930611 · Privacy · Sitemap · All rights reserved