Vuoi ricevere tutte le novità SEO direttamente via mail?

Come si crea un reindirizzamento 301?

Un reindirizzamento 301 indica al server di fornire un codice di stato HTTP 301 al client richiedente, che potrebbe essere GoogleBot o un utente. Il codice di stato segnala al client che la risorsa richiesta (un URL, per esempio) è 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 necessario (quest’ultimo vale anche per Nginx).

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.

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

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

Funzione: 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 HTTP 301 (spostato permanentemente).

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ù popolari1, quasi tutti i grandi host di siti web lo prenderanno in considerazione. Il modulo mod_rewrite richiesto, in aggiunta, risulta già attivo, in molti casi. Il file .htaccess viene tra l’altro incluso di default nella maggior parte dei pacchetti di webhosting.

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

RewriteEngine On
RewriteRule  ^dir/documento.html  https://www.dominio.com/documento.html  [R=301]

Funzione: utilizzando il comando “RewriteEnginge On”ci si rivolgerà direttamente al 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.

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

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.

Creazione di un reindirizzamento 301 per Nginx

Dopo ad Apache, Nginx è il secondo server web più utilizzato: in questo caso le istruzioni non dovranno essere inserite in un file separato, bensì direttamente nel nginx.conf.

Aggiungi il codice seguente al tuo file nginx.conf nel Server Block corrispondente o in uno nuovo:

rewrite ^/dir/documento.html $scheme://$host/documento.html permanent;

Funzione: la prima riga del codice inizia con “rewrite” e stabilisce la directory all’interno della quale è necessario impostare il codice di stato seguente.

Anche in questo caso l’URL obiettivo verrà aggiunto subito dopo ad uno spazio. Grazie a $scheme, Nginx rileverà automaticamente se si tratta di http o di https, e sarà poi possibile aggiungere l’host corrispondente tramite $host.

L’indicazione “permanent” indica che il reindirizzamento prende in considerazione un codice di stato 301.

Reindirizzamenti estesi con formule regolari

Nel caso fosse necessario reindirizzare tutti i documenti e i sottodomini, è possibile utilizzare anche un’espressione regolare.

rewrite ^/dir/(.*)$ $scheme://$host/$1 permanent;

Tramite questa formula potrai reindirizzare tutti i documenti che si trovano nella directory /dir/ all’interno della directory root. Quindi dominio.com/dir/documento2.html verrà reindirizzato a dominio.com/documento2.html, mentre dominio.com/dir/directory2/documento3.html a dominio.com/directory2/documento3.html.

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

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

Video esplicativo di Matt Cutts (Google) sull’argomento (inglese)

Is there a limit to how many 301 (Permanent) redirects I can do on a site?

Esiste un limite al numero di reindirizzamenti 301 (permanenti) che posso inserire in un sito?

Ulteriori informazioni sull’argomento

Articoli correlati