Come impostare un codice di stato HTTP con PHP

Impostando il giusto codice di stato HTTP informi Google che, ad esempio, una pagina è stata spostata permanentemente o temporaneamente. In questo articolo ti spiegheremo come impostare i codici di stato HTTP con PHP.

Quando un client (o un browser) richiama un URL, il server invia una risposta con un codice di stato HTTP. Questo codice indica se la richiesta è andata a buon fine, se si è verificato un errore o, ad esempio, se la richiesta è stata reindirizzata.

Visto che quasi tutti i siti web utilizzano PHP è utile sapere come impostare un codice di stato con PHP. In questo modo sei in grado di impostare dei reindirizzamenti in modo corretto.

Utilizzare i codici di stato HTTP per i reindirizzamenti

Impostare dei codici di stato con PHP è utile soprattutto se sposti una pagina temporaneamente o permanentemente ad un nuovo URL e vuoi creare un reindirizzamento.

I seguenti tre codici di stato sono adatti a questo scopo:

  • 301: il file desiderato può essere trovato permanentemente ad un altro indirizzo.
  • 302: l’URL si trova temporaneamente ad un altro indirizzo. Ciò succede ad esempio durante gli aggiornamenti o le azioni temporanee.
  • 307: questo codice di stato è il successore del 302, con la differenza che il client non può modificare il metodo di richiesta HTTP.

Impostare un codice di stato con PHP

Per impostare un codice di stato e un reindirizzamento con PHP utilizza la funzione header:

header ( $string [, $bool [, $int_code] ] )

Le componenti di questo codice significano:

  • $string: in questa posizione inserisci le indicazioni di sostituire l’indirizzo con “Location: http://…..tld” nel caso di un reindirizzamento.
  • $bool (opzionale): a questo punto puoi scegliere tra:
  • TRUE: nel caso in cui ci siano header precedenti dello stesso tipo, con un codice di stato da sovrascrivere, oppure:
  • FALSE: quando deve venire aggiunto un nuovo header

Di norma a questo punto sceglierai il comando TRUE.

  • $int_code (opzionale): infine segue il codice di stato per un reindirizzamento tramite PHP. Se specifici un’indicazione sulla posizione, ma non inserisci nessun codice, il codice di stato 302 verrà mandato in automatico.

Nella migliore delle ipotesi inserisci exit; per concludere l’esecuzione dello script (codice).

Ad esempio, il risultato sarà il seguente:

header(\"Location: http://indirizzo.com/\", TRUE, 307) ;exit;

Logicamente puoi inserire il codice di stato 404 anche con PHP. In questo modo indichi al crawler che la pagina non esiste più.

In questo caso il codice apparirà nel modo seguente:

header("HTTP/1.1 404 Not Found");

Se viene inserito PHP come FastCGI invece del modulo Apache, sostituisci “HTTP/1.1“ con “Status”:

header("Status: 404 Not Found");