giovedì 18 settembre 2008

L'importanza dell'url rewriting

Come era stato già accennato, i motori di ricerca preferiscono indicizzare pagine il cui Url sia chiaro ed esplicativo.
Nel caso di siti dinamici (quei siti in cui il cliente tramite un interfaccia di amministrazione inserisce autonomamente i contenuti per intenderci) le Url delle pagine, solitamente, compaiono simili a questo:

http://www.sito.com/notizie.php?id=69

Una tecnica di url rewriting come può essere il modulo mod_rewrite di apache consente di visualizzare la stessa pagina inserendo l'Url nel seguente modo:

http://www.sito.com/notizie/69.html

infatti mediante una regular expression inserita nel file .htaccess come questa :

RewriteRule ^notizie/([^/]+).html notizie.php?id=$1 [L]

apache leggerà tutte le url che gli vengono passate e se troverà , nell'indirizzo, una stringa che inizia per notizie, prenderà ciò che viene dopo lo slash come una variabile chiamandola $1 passandola automaticamente al vero indirizzo alla variavile "d": notizie.php?id=$1


Questa scrittura facilita l'indicizzazione nei motori di ricerca, ma per renderla più efficace e aiutare oltre all'indicizzazione anche il posizionamento conviene sfruttare l'informazione che identifica quella notizia, o quel prodotto come il titolo o il nome del prodotto.

Per avere massima libertà di gestire le variabili dell'url e per non doversi scontrare troppo con le regular expression (che un pò ostiche lo sono), si può pensare di delegare la gestione delle variabili al php creando un file apposta, e inserendo nel file .htaccess delle regole generiche che trasformano qualunque parametro in una variabile (fino a una certo numero);


Per esempio nel file htaccess si potrebbe inserire :

RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/*.html$ variabili.php?var0=$1&var1=$2&var2=$3
RewriteRule ^([^/]+)/([^/]+)/*.html$ variabili.php?var0=$1&var1=$2
RewriteRule ^([^/]+)/$ variabili.php?var0=$1 [L]

e poi creare un file variabili.php che si occupi di fare qualunque cosa in base alle variabili che gli arrivano.

per esempio il seguente Url:
http://www.sito.com/notizie/tragico-incidente.html
restituirebbe le seguenti variabili:
 
$var0 = notizie
$var1 = tragico-incidente


a questo punto possiamo decidere di costruire il file variabili.php in modo che quando var0 è uguale a "notizie" faremo un include della pagina notizie.php alla quale verrà passata la variabile $var1 che servirà per determinare, mediante una query sui titoli delle notizie, la notizia da visualizzare.

In questo modo abbiamo un Url che oltre ad essere leggibile e chiaro, contiene un'informazione che aiuterà nell'indicizzazione.

Nessun commento:

Posta un commento