
Tag: Programmazione, PHP, Internet, Apache, SEO.Visto 1308 volte.
Come abbiamo già illustrato in questo articolo, la tecnica del mod rewrite permette di generare URL più semplici, più leggibili e più rappresentativi del contenuto di una pagina web, evitando di eseguire assegnazioni di variabili GET esplicitamente.
Quello che vedremo in questo articolo è come generare una serie di regole che gestiscano dei parametri posizionali
I parametri prosizionali
Per utilizzare questa tecnica di mod rewrite è necessario che il nostro sito venga strutturato in maniera tale da riuscire ad utilizzare come discriminante di scelta la posizione del parametro nell'URL.
Facciamo un esempio:
se le nostre url sono tutte strutturate in questo modo
index.php?module=<modulo>&submodule=<sottomodulo>
se dovessimo riscrive la URL in questo modo
index.php/<modulo>/<sottomodulo>/
sapremo sempre che come primo parametro stiamo passando il <modulo> e come secondo il <sottomodulo>.
Utilizzare questa modalità di creazione delle URL e di rewriting ci permette di estendere le nostre possibilità in merito a cosa utilizzare nella URL.
Altro motivo per cui un sistema posizionale può aiutarci è perchè sicuramente utilizzare un linguaggio come PHP per gestire flussi di codice è decisamente meglio che utilizzare il linguaggio delle regole di riscrittura di apache.
La tecnica si basa sul passare indiscriminatamente tutta la stringa successiva al dominio o alla pagina index.php al nostro file entry point (ovvero il file che andrà poi a includere i nostri moduli/sottomoduli). Nel nostro caso il nostro file entry point sarà index.php, quindi le regole di rewrite saranno:
Code:
# Abilitare il RewriteEngine
RewriteEngine On
# Definire la basepath del dominio
RewriteBase /
# Rendere accessibili i file nelle seguenti cartelle direttamente
RewriteRule ^img/* -
RewriteRule ^ajax/* -
# Controllare che la richiesta non stia prendendo in considerazione un file o una directory
# Se questo accade non viene effettuato il rewrite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Tutto quello che viene inserito dopo il nome dominio viene passato a index.php
# e il porcesso di rewrite viene interrotto a questa regola
RewriteRule .* index.php/$0 [PT,L]
Una volta abilitato questo tipo di rewrite dobbiamo aggiungere della intelligenza al nostro entry point in modo che sia in grado di gestire il parametri passati.
Per gestire tale processo, sempre facendo riferimento all'esempio dei moduli e dei sottomoduli, una possibile gestione è la seguente:
Code:
$PARAM = substr($_SERVER['REQUEST_URI'],1);
$PARAM = explode("?",$PARAM);
$PARAM = $PARAM[0];
$PARAM = explode("/",$PARAM);
if($PARAM[count($PARAM)-1]=="") unset($PARAM[count($PARAM)-1]);
$_GET['module'] = $PARAM[0];
$_GET['submodule'] = $PARAM[1];
?>
Andando ora a chiamare la nostra pagina index.php/<modulo>/<sottomodulo>/ il risultato, se tutto è stato configurato correttamente, dovrebbe essere lo stesso della chiamata index.php?module=<modulo>&submodule=<sottomodulo>.
Conclusioni
Un sistema di rewrite di questo tipo, che sposta l'intelligenza delle riscritture lato PHP, offre maggiore flessibilità e un miglior controllo su quello che la nostra procedura deve compiere.
Abbiamo inoltre il vantaggio di gestire RewriteRule di apache più snelle e semplici, che sicuramente risultaranno più facili da capire anche a distanza di tempo.
Tags
API Apache Bash Elastix Firewall Firma digitale Geolocazione Grafica Informatica Internet Java Linux Motori di ricerca OpenMoko PHP Programmazione Python Reti Ricetta SEO Sicurezza Sistemi Operativi Varie Virtualization Virtualizzazione VoIP kvm
Blog CodiceASbarre.Net di CodiceASbarre.Net sotto licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia License.
Lavoro basato su www.codiceasbarre.net.
Ulteriori permessi in merito questa licenza possono essere richiesti a info@codiceasbarre.net.
Link ad altri blog:
