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 di destinazione verso il quale si vuole reindirizzare GoogleBot e l’utente.

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.

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.

Impostare un reindirizzamento 301 con NGINX

Dopo Apache, Nginx è il secondo server più utilizzato. In questo caso, le istruzioni non sono elencate in un file separato, ma direttamente in nginx.conf.

Inserisci il seguente codice al tuo file nginx.conf, nel server già esistente o in uno nuovo:

rewrite ^/directory/un-documento.html $scheme://$host/un-documento.html permanent;

Funzionamento: la prima riga del codice inizia con “rewrite” e definisce il percorso relativo al documento a cui il seguente reindirizzamento deve venire impostato.

Anche in questo caso viene indicato l’URL di destinazione, separato da uno spazio vuoto. Grazie a $schema, Nginx si occupa automaticamente di stabilire se si tratta di http o https e l’host corrispondente viene inserito con $host.

L’istruzione “permanent” si occupa che il reindirizzamento utilizzi il codice di stato 301.

Reindirizzamenti su larga scala con espressioni regolari

Nel caso in cui tutti i documenti e le sottodirectory vengano reindirizzati, si possono usare anche le espressioni regolari.

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

Con questa istruzione, tutti i documenti con /directory/ saranno reindirizzati alla directory principale. domain.it/directory/documento2.html è stato reindirizzato a domain.it/documento2.html e domain.it/directory/directory2/documento3.html a domain.it/directory2/documento3.html.

Impostare un reindirizzamento 301 tramite 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.

Creazione di un reindirizzamento con un plugin di WordPress

Come per ogni plugin devi prestare attenzione alle seguenti cose:

  • L’inserimento di più codici sul tuo sito potrebbe portare a un rallentamento e compromettere la sicurezza del sito stesso.
  • In caso di hackeraggio di un plugin, questo codice può raggiungere il tuo server.
  • I plugin possono cambiare proprietà, il che può modificare la stabilità o il supporto futuro del plugin.
  • Se lo sviluppo cessa, il plugin può diventare obsoleto e ti ritrovi ad affrontare un problema di migrazione se vuoi evitare futuri problemi di sicurezza o di compatibilità.
  • Se rimuovi il plugin, tutte le impostazioni e le voci precedenti potrebbero andare perse.

Un plugin di WordPress che potresti prendere in considerazione è redirection.me. È un plugin maturo e stabile, utilizzato da molte persone. Inoltre è gratuito: non esiste una versione a pagamento e offre un’interfaccia semplice per gestire i reindirizzamenti.

Interfaccia utente di redirection.me su WordPress
Interfaccia utente di redirection.me su WordPress

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