Ricerca tra la vecchia roba

mod_rewrite

Posted: luglio 5th, 2008 | Author: | Filed under: apache, networking, Programmazione | Commenti disabilitati su mod_rewrite

Apache è il server web forse più famoso nel mondo dell’open source e vanta fra le sue potenzialità la presenza di un gran numero di moduli tramite cui estendere le possibilità di un server web; alcuni di questi sono molto utili e ben testati come mod_dav, mod_ssl oppure mod_rewrite che è quello che interessa a noi. Poi c’è anche chi crea moduli da fuori di testa (un applauso per baku)

Se vi siete mai chiesti come fanno i siti di blog (ma non solo) ad avere i post organizzati secondo una URL che segue uno schema

http://packz.noblogs.org/post/ANNO/MESE/GIORNO/TITOLO

la risposta è che usano proprio mod_rewrite che permette di traslare un dato URL a livello server usando le regular expression.In realtà esiste un singolo script php che recupera dal database il contenuto del post servendosi dei dati temporali.

 Per abilitare questo modulo su un sistema debian-like eseguirei comandi

# a2enmod rewrite
# /etc/init.d/apache2 restart

e poi inserire un file .htaccess nella radice delle directory che vi interessa "riscrivere" contenenti le direttive utili ai vostri scopi; se per esempio poniamo come file .htaccess il seguente

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*).htm$ $1.php [NC]
RewriteRule ^variabile/{0,1}$      index.php?variabile=Inserisciunvalore
RewriteRule ^variabile/([^/]+)/{0,1}  index.php?variabile=$1

e creiamo un file index.php come il seguente,

<html><head></head>
<body>
<h1>URL Rewriting test</h1>
<?
echo $_GET[‘variabile’]
?>
</body>
</html>

secondo voi cosa succede quando passiamo un indirizzo del tipo

http://your.dominio.org/variabile/666

? (supponendo che sia .htaccess che index.php siano accessibili a http://your.dominio.org/) Per informazioni ulteriori (non è che abbia spiegato molto) leggetevi ‘sti link

C’è solo da aggiungere che bisogna impostare all’interno delle direttive per i siti l’opzione AllowOverride All: per esempio

<VirtualHost *:80>
    DocumentRoot /var/www/radice-del-sito/
    ServerName viva-le-orge.com
    <Directory />
        Options FollowSymLinks
        AllowOverride All
        Allow from all
    </Directory>
</VirtualHost>


Comments are closed.