[Tutorial] Apache, Mod_Rewrite e Regular Expressions
Apache e' il piu' popolare Web Server la' fuori (attendo la polemica con i sostenitori di IIS :P), ma non tutti ne sanno sfruttare appieno le potenzialita'.
Una delle cose piu' utili di Apache sono infatti le Rewrite Rules, che permettono, tra le altre cose, di "rimappare" i propri indirizzi web.
Un esempio per tutti, fatto su questo stesso Blog:
Drupal vorrebbe gli indirizzi come "http://www.delymyth.net/index.php?q=node/xxx", dove xxx e' l'ID del post nel database.
Bruttino vero?
Infatti i post qui sono raggiungibili come "http://www.delymyth.net/node/xxx", dove xxx e' sempre l'ID del post, ma esteticamente il risultato e' piu' piacevole.
Il problema, con le Rewrite Rules, e' che non sempre e' facile costruirle, e non tutti gli esempi che si trovano in giro sono quelli che ci servono.
Vi estraggo qualcosa da questo utilissimo articolo, a cui vi rimando per un eventuale approfondimento.
RewriteCond
Questa clausola vi permette di specificare le condizioni verificate le quali si applicano le regole che seguono.
Se, ad esempio, volete bloccare uno spcifico Referer, potete scrivere una regola di questo genere:
RewriteCond %{HTTP_REFERER} !^www\.delymyth\.net$ [NC]
RewriteRule .? http://www.delymyth.net%{REQUEST_URI} [R=301,L]
(i parametri li vediamo in seguito)
Flags
Ovvero quelle cose che compaiono tra parentesi quadre alla fine.
last|L
Determina la fine di una Condizione (vedi sopra), ma non la fine dell'applicazione totale delle regole.
nocase|NC
Fa si' che Apache ignori il case (maiuscolo/minuscolo) quando deve applicare le regole.
redirect|R
Redirige (rimappa) il Browser verso un'altra URL, rendendo (di default) il codice 302 del server.
E' possibile ovviamente specificare un altro codice.
qsappend|QSA
Noto anche come Query String Append, fa in modo che quello che segue un eventuale "?" venga ripassato nella riscrittura dell'URL.
forbidden|F
Fa si' che Apache renda un codice di errore 403 (Forbidden, appunto) alla richiesta.
ornext|OR
Normalmente, quando si concatenano delle condizioni, queste vengono concatenate con un operatore booleano "AND", se si vuole usare un OR, va specificato.
Commenti
E' possibile "commentare" delle regole, inserendole in mezzo a questi "tag":
RewriteEngine Off
RewriteEngine On
Queste sono le cose fondamentali, altre le trovate (insieme ad esempi completi) sulla pagina di riferimento.
Nella seconda pagina trovate invece riferimenti per le Espressioni Regolari, che vi permettono di imparare a giocare sul serio con le vostre redirezioni :)
[via DZone]






We've seen too many (sigh) starting from such tutorial who bring down our apaches ...
Frankly, one should start from a regexp tutorial ;)