Redirezioni massive di URL: gestirle in sicurezza con le librerie cURL

La comunità Seo sa bene (o almeno dovrebbe :)) l’importanza di effettuare delle redirezioni 301 quando le url del sito vengono modificate.
Ma quando si tratta di una modifica massiva, e le Url del sito sono state tutte modificate (ad esempio in un cambio di sito), come si fa ad essere sicuri di non aver dimenticato qualche pezzo per strada?

Esistono molti modi per gestire questa situazione, ora vi espongo il mio, sperando di essere di aiuto a qualcuno.

no-404-pages-but-redirect-301

1) FARE UNA FOTOGRAFIA ALLE URL DEL VECCHIO SITO

E’ necessario ottenere la lista delle Url del sito prima che vengano modificate, come fare?
La soluzione più semplice è utilizzare un qualsiasi emulatore di spider. Ce ne sono molti, personalmente utilizzo Xenu ma funziona altrettanto bene anche Integrity per Mac (ma se non vi piacessero i 2 che ho elencato, sul web si trovano molti altri tool validi).

Tramite Xenu è possibile ottenere facilmente tutte le Url del sito, utilizzando il comando “file >> report”  alla fine della scansione. Oppure se il sito è molto grande utilizzate “file >> export to TAB separated file…” e importate il risultato in un foglio di calcolo, eviterete di impallare il PC nel caso di siti di grande dimensione.

2) REALIZZARE I VARI REDIRECT DALLE VECCHIE ALLE NUOVE URL

Utilizzate il metodo che preferite per realizzare una mappatura puntuale tra le vecchie e le nuove Url (non dimenticatevi anche di effettuare i redirect dei link che arrivano dall’esterno, altrimenti addio Link Popularity).

Le soluzioni maggiormente utilizzate sono:

  • mod_rewrite e file .htaccess se utilizzate il web server Apache
  • isapi_rewite e file .htaccess o file httpd.ini (in base alla versione utilizzata) se utilizzate il web server IIS (vi rimando all’articolo sulla realizzazione di Url parlanti con isapi rewrite che ho scritto)

Potrebbe però anche capitarvi il caso in cui non abbiate la possibilità di accedere al file htaccess, oppure che il file htaccess sia – ahimè –  condiviso tra più domini, in questo caso vi consiglio di fare un “accrocchio” come il seguente:

Utilizzate la pagina 404 come “attivatrice di redirezioni”. Modificatela così: ogni volta che il sistema chiama una pagina non presente (o pagina 404) fate una chiamata al DB e controllate se l’Url chiamata è presente in una tabella del Database appositamente creata, e se la risposta è affermativa effettuate la redirezione secondo le regole salvate nel DB.

Ecco un immagine esplicativa (spero) del funzionamento di questa soluzione:

redirect-tramite-la-pagina-404

In questo modo sarà sufficiente modificare la pagina 404 una volta per tutte, inserendo all’inizio del codice la chiamata al database, e non dovrete avere un accesso al file .htccess e nemmeno aspettare i tempi tecnici perché i referenti del sito in oggetto possano intervenire al posto vostro, ma vi basterà un accesso al DB (ad esempio tramite phpmyadmin).
Attenzione però a non inserire combinazioni che generino LOOP, come ad esempio una riga “urlA –> 301 –> urlB”  e successivamente una riga “urlB –> 301 –> urlA”

3) CONTROLLARE CHE LE REDIREZIONI SIANO TUTTE FUNZIONANTI

Ed eccoci alla parte più importante!
Controllare le redirezioni in un sito con qualche centinaio di pagine è un lavoro noioso, pensate se si tratta di qualche migliaia…
Diventa quindi una necessità uno strumento automatico per il controllo delle varie redirezioni, e grazie alla fotografia che abbiamo creato nel punto 1, e a qualche riga di codice PHP sarà un gioco da ragazzi.

Innanzitutto dobbiamo avere una versione di PHP con le librerie cUrl installate, se non sapete come fare vi rimando alla guida ufficiale.

Le librerie cUrl permettono di effettuare chiamate alle Url (sia in Get che in Post) e di estrarne gli header di risposta, quindi fanno esattamente al caso nostro.
Ci basterà realizzare una pagina PHP che riceve in input la lista delle URL (La fotografia del vecchio sito) e che ritorna in output un file (ad esempio un csv da poi aprire in xls) con i seguenti campi:

“Url chiamata / status code ricevuto / url finale restituita / numero di redirezioni”

Ed ecco che in un attimo potrete testare siti di dimensioni elevate :)

Questo post non contiene i dettagli tecnici del codice sorgente, ma tutti coloro che non riuscissero a realizzare questo strumento mi contattino pure, sarò ben lieto di fornire loro supporto,  e se necessario i file php che ho realizzato e che utilizzo da un paio di anni.

Così mentre il software realizzato lavora per noi, possiamo dedicarci ad attività di maggiore interesse :)

Sii il primo a lasciare un commento. Non essere timido!

Partecipa alla Discussione

Puoi usare i seguenti HTML tag e attributi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>