Come si crea un reindirizzamento 301?

Un reindirizzamento 301 indica al server di mostrare un codice di stato HTTP 301 al client che sta richiedendo una risorsa, cioè GoogleBot o un utente. Questo codice di stato segnala al client che la risorsa richiesta (ad esempio un URL) è stata permanentemente spostata ed è ora disponibile su un nuovo URL.

Puoi impostare un reindirizzamento 301 in PHP o, se utilizzi un server Apache, attraverso un file .htaccess con il modulo mod_rewrite.

Creazione di un reindirizzamento 301 con PHP

Per creare un reindirizzamento 301 tramite PHP dovrai prima di tutto assicurarti che la sorgente del documento sia un file PHP. Una volta soddisfatta questa condizione, il codice PHP del reindirizzamento 301 verrà aggiunto direttamente all’interno del documento da reindirizzare.

Esempio: incolla il seguente codice sorgente nella prima riga del documento che vuoi reindirizzare:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.dominio.com/nuovo-nome.php");
header("Connection: close");
?>

Funzionamento: incollando il codice sorgente precedente all’interno del file “vecchio-nome.php”, che è raggiungibile tramite “dominio.com/vecchio-nome.php”, tutti i visitatori verranno reindirizzati alla nuova sorgente “dominio.com/nuovo-nome.php” (riga 3) tramite il codice di stato 301.

Creazione di un reindirizzamento 301 per Apache tramite file .htaccess

Per creare un reindirizzamento 301 attraverso un file .htaccess ti servirà un server Apache e l’attivazione del modulo mod_rewrite. Considerando che Apache è uno dei server più popolari, viene utilizzato da quasi tutti i grandi host di siti, mentre il modulo mod_rewrite richiesto per questa procedura molto spesso risulta addirittura già attivo. Il file .htaccess viene tra l’altro incluso di default nella maggior parte dei pacchetti di webhosting.

Il file .htaccess si trova nella directory principale del contenuto, ma può anche funzionare a livello di sottodirectory.

Incolla il seguente codice sorgente all’interno del file .htaccess:

RewriteEngine On
RewriteRule  ^/directory/un-documento.html
http://www.dominio.com/un-documento.html  [R=301]

Funzionamento: utilizzando il comando “RewriteEnginge On” verrà attivato il modulo mod_rewrite del server Apache. La seconda riga del codice, la quale inizia con “RewriteRule”, definisce il percorso relativamente al/ai documento/i a cui si rivolge il reindirizzamento impostato. Separato da uno spazio, ma sulla stessa riga, si trova l’URL obiettivo verso il quale si vuole reindirizzare GoogleBot e l’utente.

Infine, nelle parentesi quadre, verrà inserito il codice di stato HTTP del server che dovrà essere utilizzato per questo reindirizzamento. In questo caso è importante definire il codice di stato 301, in quanto, nel caso non venisse esplicitato, Apache utilizzerà automaticamente il codice di stato 302.

Nel nostro esempio, il file “un-documento.html” non è più disponibile all’interno della directory “/directory/“, ma si trova a un livello superiore, nel nome di dominio.

Ricorda che esistono diversi tipi di regole e sintassi che puoi usare per i reindirizzamenti (ad esempio, un Redirect permanente da http a https).

Per reindirizzare permanentemente le richieste http ad https è possibile intercettarle usando una “Port 80 Redirection”. Port 80 è una porta TCP per traffico non criptato.

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.dominio.com/$1 [R=301,L]

Funzionamento: catturando tutte le richieste che arrivano alla Port 80 del server, queste possono essere permanentemente reindirizzate all’equivalente URL in https.

Per saperne di più puoi leggere l’articolo seguente: Apache mod_rewrite Introduction.

Impostare un reindirizzamento 301 con NGINX, Lighttpd o Microsoft Internet Information Services (IIS)

I reindirizzamenti 301 possono essere impostati anche utilizzando altri server, come NGINX, Lighttpd o IIS, che risultano meno complicati e quindi più adatti ai meno esperti.

Video esplicativo di Matt Cutts (Google) sull’argomento

Esiste un limite per i reindirizzamenti 301 che posso creare sul mio sito?

Ulteriori informazioni sull’argomento

29.09.2021