SEO e HTTP status code

Conoscere gli staus code HTTP è fondamentale per qualsiasi web designer, sia per agevolare l’ottimizzazione SEO delle pagine, sia per chi volesse capire e monitorare le pagine di errore con Google Analytics. Infatti, lo status code restituito da un server determina il risultato di una risposta HTTP. Vista dall’ottica dei motori di ricerca, lo status code influenza il posizionamento di una pagina così come la sua indicizzazione.

HTTP headers: Cosa sono?

Quasi tutto quello che vedi nel browser viene trasmesso al computer tramite il protocollo HTTP. Ad esempio, quando hai aperto questa pagina , il browser probabilmente ha inviato più di 40 richieste HTTP e ha ricevuto risposte HTTP per ciascuna di esse. Gli HTTP headers sono la parte centrale di queste richieste e risposte HTTP, e portano informazioni riguardo il browser client, la pagina richiesta, il server e altro ancora.
Ecco un esempio pratico:

Quando si digita un URL nella barra degli indirizzi, il browser invia una richiesta HTTP che può apparire come segue:

GET /miosito/blog/titolo-del-mio-articolo-/ HTTP/1.1
  Host: net.tutsplus.com
  User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Language: en-us,en;q=0.5
  Accept-Encoding: gzip,deflate
  Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
  Keep-Alive: 300
  Connection: keep-alive
  Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120
  Pragma: no-cache
  Cache-Control: no-cache

La prima linea è la "Request Line", che contiene alcune informazioni di base sulla richiesta. E il resto sono gli header HTTP. Dopo tale richiesta, il browser riceve una risposta HTTP che può apparire come segue:

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2013 08:13:04 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 05 Aug 2010 03:50:37 GMT
X-Pingback: https://paitadesign.com/blog/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent
<!-- ... contenuto html ... -->

La prima linea è la "Status Line", seguita dagli "header HTTP", fino alla riga vuota.
Dopo di che, inizia il "contenuto" vero e proprio della pagina (in questo caso, un output HTML).
Quando si guarda il codice sorgente di una pagina web nel browser, si vedrà solo la parte di codice HTML e non le intestazioni HTTP, anche se effettivamente sono state trasmesse così come le vedete sopra.
Queste richieste HTTP sono state inviate e ricevute anche per altre cose, come immagini, file CSS e JavaScript, ecc…
Questo è il motivo per cui poco prima abbiamo accennato al fatto che il browser ha inviato almeno 40 o più richieste HTTP quando è stata caricata questa pagina.

Non ci interessa qui approfondire nel dettaglio gli HTTP headers.

HTTP status code: comprenderli e gestirli

I server HTTP rispondono utilizzando linee di status che informano il client sull’esito della richiesta.
Gli status contengono 3 campi:

  1. versione del protocollo HTTP
  2. status code
  3. descrizione

Lo status code è dato da un numero a 3 cifre con i seguenti significati:
1XX consiste solo nella status line e in headers opzionali
2XX l’azione richiesta ha avuto successo: la pagina è presente e il server ne restituisce il contenuto
3XX richiesta di reindirizzamento
4XX è un errore lato client e contiene sintassi errata
5XX è un errore lato server e il server non ha potuto soddisfare la richiesta

SEO e Status code HTTP

Dal punto di vista dell’ottimizzazione SEO gli status code più importanti sono:

  • 200 (OK) serve per indicare che la pagina esiste e ne restituisce successvamente il contenuto;
  • 204 (No Content) indica che la richiesta è stata processata ma non è stato reperito alcun contenuto da inviare;
  • 301 (Moved Permanently) indica che il file specificato è stato permanentemente spostato in un’altra locazione (è necessario specificare la nuova locazione permanente). Da utilizzare ai fini SEO nello spostamento di URL permanentemente.
  • 403 (Forbidden) indica che la richiesta non è autorizzata, spesso causata dal settaggio dei permessi sul web server o dall’accesso non consentito ad un area coperta da user name e password;
  • 404 (Not Found) serve ad indicare che la risorsa all’URL richiesta non è stata trovata. Da utilizzare ai fini SEO e di usabilità, impostando nel web server un Error Document con destinazione una pagina HTML con un messaggio di errore per l’utente;
  • 410 (Gone) rappresenta la risposta in caso di risorsa non più disponibile;
  • 500 (Internal Server Error) indica che il server è incorso in un errore inaspettato che non ha permesso di completare la richiesta;
  • 503 (Service Unavailable) consente al bot di capire che il sito è temporaneamente fuori servizio. Importante utilizzare lo status 503 qualora il sito web non sia disponibile per un periodo superiore alle 5 ore per motivi tecnici.

Per impostare il redirect delle pagine di errore su pagine SEO freindly è possibile settare il file htaccess per i server Apache.