Guida pratica al modulo Rewrite in Apache
Articolo scritto da Claudio Garau
Pagina 4 di 4
Pagina 4 di 4
4. Alcuni esempi di Rewrite delle URL
Un esempio estremamente semplice di riscrittura delle URL potrebbe essere il seguente in cui il nome di un vecchio file non più esistente viene utilizzato come mascheramento per raggiungere un nuovo file nuovo:
RewriteEngine on RewriteRule ^old\.html$ new.html [L]Come è possibile notare, all'interno delle regole utilizzate sono stati introdotti alcuni caratteri speciali:
- Il carattere speciale "^", simboleggia la parte iniziale di un'URL all'interno della directory corrente, cioè quella in cui deve essere uploadato il file .htaccess; "^" permette in pratica di sostituire qualsiasi inizio di stringa.
- Il simbolo del dollaro, "$", simboleggia la fine di una stringa delimitando la parte in cui si conclude la riscrittura.
- il backslash, "\", viene utilizzato invece come carattere di escape, è stato posto davanti al punto fermo per indicare al Web server che questo dovrà essere interpretato come un qualsiasi altro carattere (in mancanza il punto verrebbe interpretato com carattere speciale che indica "un qualsiasi carattere").
Facciamo l'esempio di voler mascherare un'URL tipo "prodotti.php?prodID=2" nella più semplice "prodotti/2/", le regole necessarie per il nostro .htaccess potranno essere scritte in questo modo:
RewriteRule ^prodotti/([0-9]+)/$ /prodotti.php?prodID=$1Di seguito alcune osservazioni relative al nostro esempio:
- l'espressione ([0-9]+) sta ad indicare un valore variabile (delimitato da parentesi tonde ()) che può avere come contenuto un qualsiasi numero intero indicato dal gruppo [0-9] seguito dal simbolo + (che sta ad indicare la presenza di "uno o più caratteri"). Questa variabile verrà utilizzata per passare il valore di prodID alla URL reale.
- Il simbolo del dollaro presente alla fine della prima URL (quella fittizia) blocca il processo di riscrittura a quell'altezza e quindi non saranno trovate corrispondenze se la URL digitata proseguisse oltre quella slash.
- Il simbolo del dollaro accompagnato da un valore numerico (nel nostro caso $1) che abbiamo utilizzato nella parte destra della nostra espressione serve per richiamare il valore variabile (nel nostro caso un numero intero) individuato dalle parentesi tonde nell'espressione di sinistra.
RewriteRule ^prodotti/([0-9]+)/([0-9]+)/$ /prodotti.php?catID=$1&prodID=$2Naturalmente i valori passati come parametri alle variabili possono anche essere delle stringhe: in questo caso utilizzeremo le espressioni [a-z] (per i caratteri minuscoli), [A-Z] (per i caratteri maiuscoli) o [A-Za-z] (per qualsiasi carattere sia esso minuscolo o maiuscolo).
Per fare un esempio si supponga di dover riscrivere una URL del tipo "http://www.sito.it/articoli.php?cat=sport&id=1" in "http://www.sito.it/articoli/sport/1.html;
RewriteRule ^/articoli/([a-z]+)/([0-9]+).html /articoli.php?cat=$1&id=$2 [L]Quelle visti qui sopra, ovviamente, non sono che una minima parte delle potenzialità offerte dal modulo mod_rewrite, non mi resta quindi che invitarvi ad approfondire l'argomento in attesa di un nuovo articolo dedicato a questo fantastico modulo di Apache.
');







