Sito nuovo, Url vecchi

Nel rifacimento di Fucinaweb si è passati da una piattaforma Microsoft (Asp) a una Linux.

Al di là degli indiscussi vantaggi di questa migrazione, un problema che questo tipo di operazioni comporta è la difficoltà nel mantenere ancora funzionanti i link (sparsi per Internet) diretti al vecchio sito.

Il caso più evidente sono gli accessi provenienti dai motori di ricerca: un utente che compie una ricerca si troverà di fronte ad un “page not found”, almeno fino a quando il motore non aggiornerà i propri indici (sì, ma quando?).

Ma in giro di link sparsi ce ne possono essere a decine, magari provenienti da siti partner o da chi semplicemente ha trovato interessanti gli articoli del sito: in questo caso è molto difficile che vengano aggiornati. Questo ha poi delle dirette ripercussioni sempre sul nostro posizionamento nei motori di ricerca, che dipende anche da quanti link in ingresso (funzionananti) il nostro sito riceve.

Anche se non sempre adottate, esistono in realtà alcune tecniche, basate su file di configurazione, che permettono di associare, tramite opportune mappe, la struttura dei vecchi Url con quelli nuovi.

Se la nuova versione del sito è ospitata da un server Linux/Unix, avete buone probabilità di poter configurare il file .htaccess che, tra le tante cose, permette di convertire un Url in ingresso con uno di uscita.

Proprio questo file è quello che abbiamo usato per fare in modo che Fucinaweb funzioni correttamente sia con la nuova nomenclatura di Url, sia con la precedente.

Un tipico esempio di riga presente nel nostro file .htaccess è il seguente:

RewriteRule ^home/collabora.asp$ /index.php?pagename=collabora

La prima parte indica qual è l’Url in ingresso (in questo caso home/collabora.asp), la seconda parte qual è in realtà la pagina da servire al browser (index.php?pagename=collabora). Il tutto in modo assolutamente trasparente al visitatore, senza che vari neppure l’indirizzo nella finestra del browser.

Le potenzialità del file .htaccess sono in realtà molto elevate, più di quanto appaia da questo semplice esempio. E’ infatti possibile utilizzare delle regole di conversione degli Url che si basano sulle cosiddette espressioni regolari. Un esempio in questo caso è il seguente:

RewriteRule ^blog/([_0-9a-z-]+)?.asp$ /index.php?category_name=news&paged=1

In questo secondo caso, tutto quello che inizia con blog/ ed è seguito da una qualsiasi combinazione di lettere e numeri e da .asp, viene convertito in /index.php?category_name=news&paged=1.

La trattazione completa del file .htaccess esula dai nostri propositi, ma non dovrebbe essere difficile trovare qualche buon tutorial in internet.

E per chi non ha Linux? Anche Asp.Net, tramite il file di configurazione web.config dà la possibilità di specificare mappature tra Url di ingresso e uscita (per saperne di più, esiste un buon articolo di The Code Project).

Qualunque sia la soluzione che adotterete, ecco qualche consiglio per rendere la migrazione meno dolorosa:

  • cercate di associare ad ogni pagina un nome univoco, indipendentemente dalla cartella in cui verrà salvata (es. comunicati2005.asp, promozioni.asp); se possibile, utilizzate dei progressivi numerici (anche se ne perdete un po’ in usabilità)
  • posizionate le pagine sempre allo stesso livello di cartelle (es /cartella/cartella1, /cartella/cartella2 e non cartella/cartella1/cartella11 /cartella, ecc.)
  • non usate link assoluti (http://) per pagine del vostro sito collegate a pagine dello stesso sito