[Tutorial] Apache, Mod_Rewrite e Regular Expressions

[Tutorial] Apache, Mod_Rewrite e Regular Expressions

Posted by DElyMyth on Tue, 2007-10-09 17:23 in

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]


Comment viewing options
Select your preferred way to display the comments and click "Save settings" to activate your changes.
Re: [Tutorial] Apache, Mod_Rewrite e Regular Expressions

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

Posted by gfdsa (not verified) on Wed, 2007-10-10 08:31
Post new comment
The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <br> <p>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.