Post

Apache – Mappare URL sul Filesytem

In apache on novembre 25, 2009 by poyblog Messo il tag: , ,

In questo articolo cercherò di spiegare come apache gestisce le URL.  In particolare come elabora le richieste per  restituire le pagine corrispondenti presenti nel filesystem.

Document root

Il comportamento predefinito del server Web, quanto riceve una richiesta,  è quella di prendere la parte di URL che segue la sezione identificata da hostname e porta, e concatenarla alla DocumentRoot, solitamente specificata nel file di configurazione generale.

Per esempio nel caso in cui la DocumentRoot fosse /var/www/html, una URL del tipo http://www.sito.it/spesa/giocattoli.html verrebbe risolta nella posizione locale: /var/www/html/spesa/giocattoli.html

E’ utile ricordare come apache si serve dei virtual host, tramite i quali simula un ambiente multi-dominio; in questo caso la mappatura fra URL e filesystem dipende dalla specifica documentRoot del virtual host

File esterni alla DocumentRoot

E’ possibile riferire alcune richieste a pagine fisicamente esterne rispetto al percorso di default, apache offre diversi modi per effettuare questa operazione. Solitamente, in sistemi Unix, il riferimento da una locazione ad un altra viene effettuata tramite i link simbolici, che apache solitamente nega per ragioni di sicurezza, a meno che venga impostata la voce Options con i valori FollowSymlinks o SymLinksIfOwnerMatch

Alternativamente è possibile utilizzare la direttiva Alias. Vediamo subito un esempio molto eloquente:

Alias /documenti /var/documenti

In questo caso una richiesta alla pagina http://www.sito.it/documenti/dir/indice.html verrà risolta con la pagina locale /var/documenti/dir/indice.html

La direttiva ScirptAlias si comporta allo stesso modo della direttiva indicata appena sopra, solo che si indica il percorso di riferimento per gli script CGI

Redirezione

Fino ad ora abbiamo visto come alcune direttive di apache forniscono il contenuto di una locazione sul filesystem in base ad un a richiesta; a volte è necessario al contrario informare il client che la sua richiesta deve essere direzionata verso un’altra URL, e quindi istruire il browser per eseguire una nuova chiamate verso una locazione diversa. Questo è quello che in gergo viene chiamato Url Redirection ; tutto ciò può essere affrontato con la direttiva Redirect, eccone subito un esempio:

Redirect permanent /giocattoli_nuovi/ http://www.sito.it/giocattoli

In questo modo la richiesta alla pagina http://www.sito.it/giocattoli verrà ridirezionata verso http://www.sito.it/giocattoli_nuovi

E’ possibile eseguire delle ridirezioni più complicate sfruttando la potenza delle espressioni regolari e la direttiva RedirectMatch

Reverse Proxy

Apache è in grado di raccogliere documenti remoti e portarli in una posizione locale, per poi mostrarla a delle richieste client, rendendo tutto trasparente al browser richiedente

E’ necessario abilitare e configurare il modulo mod_proxy di apache al fine di ottenere un corretto funzionamento.

Ecco un esempio sfruttando la direttiva ProxyPass:

ProxyPass /google/ http://www.google.com

In questo caso digitando la URL http://www.sito.it/google/ verremo reindirizzati proprio sul sito www.google.com

Mod_rewrite

Quando sono richieste operazioni di sostituzione più potenti rispetto a quelle indicate fino a questo momento, le regole di sostituzione del modulo di rewrite sono molto utili. Tale modulo è in grado di determinare il tipo di ip richiedente o il browser, e gestire la richiesta di conseguenza; in più è possibile che tale modulo utilizzi un database esterno che lo supporti nella gestione delle richieste. Tale modulo è in grado di gestire tutti e tre i tipi di ridirezione:

  • interna (verso una posizione locale)
  • esterna (verso una posizione remota)
  • proxy

File not Found

Inevitabilmente le URL che non corrispondono ad alcun file presente sul filesystem non possono essere servite. Questo può accadere per svariati motivi:

  • un’errata digitazione della URL
  • la URL si riferiva a dei vecchi documenti che ora sono stati spostati

In questo secondo caso è possibile utilizzare le tecniche di URL redirection per informare il browser che le risorse cercate sono state spostate altrove.

Nel primo caso dell’elenco è possibile utilizzare il modulo mod_spelling, che è in grado di analizzare la URL digitata ed in base ad un confronto con quelle effettivamente esistenti propone al client una scelta fra le risorse valide. Ovviamente tutto questo ha un costo in termini di prestazioni.

Se ovviamente ogni tentativo di scovare una risorsa locale fallisce viene visualizzata una pagina di errore con codice 404 (FILE NOT FOUND). L’aspetto grafico di questa pagina viene curato dalla direttiva ErrorDocument e può essere personalizza.

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.