
guide
Tutti i linguaggi per diventare uno sviluppatore di app per Android.
Utilizzare il modulo mod_rewrite di Apache per riscrivere gli URL e renderli più gradevoli e facilmente posizionabili sui motori.
Quasi tutti conoscono mod_rewrite di Apache come il modulo in grado di creare indirizzi statici pienamente graditi ai motori di ricerca e agli standard web.
In realtà il mod_rewrite è uno strumento molto sofisticato e malleabile che può assolvere varie funzioni: potete usarlo al posto delle direttive Alias
o delle direttive Redirect
, potete fare sniffing a basso livello del browser per fornire contenuti adeguati, potete fare sniffing della lingua dell’utente per fornire contenuti nella sua lingua, potete creare un controllo sull’IP dell’utente in modo da smistare accessi leciti e accessi illeciti, potete far passare le espressioni regolari trovate ad uno script per essere poi processate, potete usare complessi schemi di controllo del flusso. In pratica il mod_rewrite svolge la funzione di altri 5-6 moduli specifici. Per questo motivo saperlo usare veramente a fondo è molto difficile.
Quello spiegato in questo articolo è il suo funzionamento base: ottimo per trasformare scomodi URL dinamici in accattivanti URL statici con cui fare felici i motori di ricerca ed appagare il nostro gusto estetico (un URL statico è più bello da vedere di uno dinamico pieno di strani caratteri).
Il modulo mod_rewrite è attivo praticamente su ogni sistema Apache a meno che in fase di compilazione non siano stati indicati solo alcuni moduli per alleggerire l’eseguibile (soprattutto nel caso di un linking statico) oppure che nel file di configurazione non sia stato omessa la direttiva per richiamare il modulo (più probabile).
Se avete accesso al server potete cercare di risolvere il problema: trovate la porzione del file di configurazione in cui vengono richiamati i moduli ed aggiungere la chiamata al mod_rewrite. Saranno presenti altre direttive del tipo
LoadModule nomemodulo.so (se in ambiente linux) LoadModule nomemodulo.dll (se in ambiente windows)
Se è presente una direttiva con un modulo dal nome simile a mod_rewrite ma è preceduta dal simbolo cancelletto togliete quest’ultimo per attivarlo. Create un vostro file htaccess inserendovi la seguente direttiva per attivare il mod_rewrite.
RewriteEngine On
Il funzionamento di questo modulo per l’utilizzo che ne andremo a fare noi è abbastanza semplice e consta di alcune direttive RewriteRule
una in seguito all’altra con la seguente struttura:
RewriteRule EXPR Nuovofile [FLAG,FLAG]
Questo modulo legge le direttive in sequenza e prova tutte le espressioni regolari alla ricerca di quelle che possano andare bene. Ad ogni espressione regolare corrispondente viene applicata la trasformazione specificata. È comunque possibile fare in modo che il mod_rewrite cambi il suo funzionamento tramite vari flag spiegati in seguito.
Le espressioni regolari valide per il mod_rewrite sono quelle standard valide per molti altri linguaggi di programmazione. Se avete già esperienza con l’uso delle espressioni regolari in un linguaggio come ad esempio PHP, MySQL e simili non troverete problemi a scrivere correttamente le direttive necessarie. Diversamente ecco un breve elenco di nozioni da conoscere.
Ci sono alcuni caratteri jolly con un significato speciale:
È possibile indicare il numero di caratteri consecutivi da considerare in diversi modi:
Conviene sempre aver bene presente la differenza tra i primi tre per evitare di commettere errori concettuali. Un errore molto frequente consiste nell’indicare il tipo di carattere cercato senza specificarne il numero: se con una stringa del tipo “aaaab” diciamo al mod_rewrite di cercare ^ab
non avremo un riscontro positivo; questo perché in realtà i caratteri “a” presenti sono più di uno. L’espressione regolare corretta da usare in questo caso è ^a+b
.
È possibile indicare classi di caratteri cercati inserendoli all’interno di parentesi quadre:
Ovviamente è possibile combinare le classi con gli indicatori di quantità come ad esempio [0-9]+
per indicare uno o più cifre.
L’ultima cosa da tenere a mente è il concetto di sostituti: potete evidenziare una parte dell’espressione regolare da estrapolare dalla stringa e da riutilizzare con l’URL reale. In pratica il mod_rewrite sta tutto in questa funzionalità, trasferisce parti di testo da un indirizzo fittizio ad uno reale. Questa funzionalità si ottiene indicando tra parentesi tonde una parte dell’espressione regolare che verrà successivamente ripresa nella composizione dell’URL reale. Esempio: ^/news/([0-9]+)/$
Per il resto ogni carattere corrisponde a sé stesso, quando volete specificarne uno riservato (quelli speciali elencati sopra) dovete semplicemente farlo precedere da un backslash “”. Così .
indica un punto e +
indica un più. Dato che anche il backslash è un carattere speciale ne consegue che per indicarne uno dovrete usarne due (), questo non vi capiterà molto spesso comunque visto il campo in cui andiamo ad operare con le espressioni regolari (URL).
Riepilogando, i caratteri speciali sono: “$”, “^”, “|”, “.”, “-“, “+”, “*”, “?”, “(“, “)”, “[“, “]”, “{“, “}”, “”.
L’URL reale, il secondo parametro della direttiva RewriteRule
, può essere relativo alla directory in cui ci stiamo trovando (in questo caso si tratta però di un path e non di un URL) o assoluto rispetto alla root del server (sempre un path) oppure assoluto rispetto al nostro dominio. Cioè può corrispondere ad uno di queste forme:
Il mio consiglio è di utilizzare sempre la prima forma, è portabile in caso di cambiamenti di dominio o di spostamento di tutta la struttura directory precedente la document root.
Oltre ad indicare il nome dello script da richiamare possiamo inserire parti dell’espressione regolare intercettate precedentemente (quelli che ho chiamato sostituti). Per farlo dovete indicare un segno di dollaro “$” seguito da una cifra numerica ad indicare la posizione di questa corrispondenza.
Attenzione: la cifra non corrisponde alla posizione effettiva dei sostituti trovati ma a quella dei sostituti presenti nell’espressione regolare.
Ad esempio in questa espressione regolare /news/p/([0-9]+)?/([0-9]+)/
non è detto che il primo sostituto venga trovato (infatti è seguito dal punto interrogativo che come abbiamo visto indica o meno la corrispondenza del carattere): nonostante questo per indicare l’eventuale numero che segue /p/
è necessario chiamarlo con $1 e chiamare con $2 l’ultimo numero. Con gli esempio che forniremo più avanti questo problema apparirà più chiaro.
Infine è possibile inserire all’interno di un URL una variabile impostata da apache precedentemente per mezzo della seguente forma: “%{variabile}”. Le variabili impostate da Apache le potete trovare tramite PHP con la funzione phpinfo()
alla sezione variabili del server ($_SERVER
).
Come terzo parametro della direttiva possiamo aggiungere dei Flag che modificano il funzionamento del mod_rewrite. Vanno indicate tra parentesi quadre intercalate da virgole. Ecco le principali:
L – ultima direttiva: generalmente il mod_rewrite esegue pazientemente tutte le espressioni regolari presenti una dopo l’altra continuando a sostituire gli URL corrispondenti alle espressioni con gli URL reali forniti. Se però un URL non dovrà subire altre trasformazioni è necessario impostare questo flag per impedire ad apache di consumare inutilmente risorse del sistema.
QSA – query string append: aggiunge all’URL reale la query string presente al livello della finta URL. Molto utile per portarsi dietro contenuti appesi in query string o anche variabili di cui non avevamo tenuto conto.
NC – no case: valuta l’espressione regolare senza tenere conto di maiuscole o minuscole.
C – chain: lega la presente direttiva alla successiva facendole terminare correttamente entrambe o non applicandone nessuna.
URL da trasformare: http://dominio/52/Descrizione.htm
URL reale: /show.php?id=1
RewriteRule ^/([0-9]+) /show.php?id=$1 [L,QSA,NC]
La parte importante dell’URL in questione è rappresentata dal numero, solo questo infatti ci servirà da passare al nostro script show.php
. Per rendere più gradevole l’URL abbiamo aggiunto al numero anche una stringa di descrizione. Io solitamente separo il valore numerico e la descrizione per mezzo di uno slash in modo che sembri una pagina all’interno di una directory ma è possibile usare anche l’underscore “_” o il trattino “-” o la virgola “,” o il carattere che preferite puramente in base al vostro gusto estetico.
URL da trasformare: http://dominio/docs/52-Nome-del-documento.pdf
URL reale: /docs/52.pdf
RewriteRule ^/docs/([0-9]+)(.[a-z]{3,4}) /docs/$1$2 [L,QSA,NC]
Questa regola è molto utile nel caso di documenti collegati a qualche entità presente su un nostro database (ad esempio un allegato ad una news). In questo modo potremo salvare il documento fisicamente sul filesystem con nome id della news e sua estensione ma collegarlo con un nome più eloquente.
URL da trasformare: http://dominio/script.py?id=12
URL reale: /script.php?id=12
RewriteRule ^/(.+).py(.+)? /$1.php$2 [L,QSA,NC]
Questa regola ci permette di mascherare l’uso di PHP facendolo sembrare un altro linguaggio di programmazione lato server, Python in questo esempio.
Se vuoi aggiornamenti su Riscrivere gli URL con il modulo mod_rewrite di Apache inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
Scaricando un film da Internet può capitare di imbattersi in una pellicola con il flusso audio in lingua straniera. Ecco […]
Tutti i linguaggi per diventare uno sviluppatore di app per Android.
Come creare applicazioni per il Web con PHP e MySQL per il DBMS.
Tutte le principali tecnologie per diventare uno sviluppatore mobile per iOS.
I fondamentali per lo sviluppo di applicazioni multi piattaforma con Java.
Diventare degli esperti in tema di sicurezza delle applicazioni Java.
Usare Raspberry Pi e Arduino per avvicinarsi al mondo dei Maker e dell’IoT.
Le principali guide di HTML.it per diventare un esperto dei database NoSQL.
Ecco come i professionisti creano applicazioni per il Cloud con PHP.
Lo sviluppo professionale di applicazioni in PHP alla portata di tutti.
Come sviluppare applicazioni Web dinamiche con PHP e JavaScript.
Fare gli e-commerce developer con Magento, Prestashop e WooCommerce.
Realizzare applicazioni per il Web utilizzando i framework PHP.
Creare applicazioni PHP e gestire l’ambiente di sviluppo come un pro.
Percorso base per avvicinarsi al web design con un occhio al mobile.
Realizzare siti Web e Web application con WordPress a livello professionale.
Sviluppare App HTML5 ibride per iOS e Andoid senza dover installare e configurare i relativi SDK e testare tutto direttamente sul telefono, grazie alla compilazione su cloud
Il monitoring dei nostri server web può essere un task arduo. Vediamo come alleggerirci il compito grazie a Logstalgia, che simula una partita a Pong.
Apache Ant è uno degli strumenti di build più diffusi: permette di definire diverse operazioni (task) per la gestione del […]
Apache è uno dei principali web server disponibili sul mercato, usati sia in contesti professionali che amatoriali. Questa guida offre una panoramica completa all’uso di Apache: rivolta ad utenti e professionisti, è corredata di esempi pratici e spiegazioni per apprendere come configurare e gestire i parametri di questo famoso web server.