back to top

Gestione delle URL in CodeIgniter

Uno dei vantaggi messi a disposizione da CodeIgniter è quello relativo al suo sistema di gestione delle URL.

Di default, infatti, le URL di questo framework sono strutturate per essere nel contempo search-engine friendly (ottimizzate per l’indicizzazione e il posizionamento delle pagine nei motori di ricerca ) e human friendly (facili da ricordare e da digitare per gli utenti).

Ciò non deve stupire in quanto il primo scopo per il quale è stato concepito CodeIgniter è quello di creare applicazioni Web based da utilizzare all’interno di siti Internet.

Nello specifico il nostro framework utilizza, al posto delle classiche querystring, un approccio basato sulla segmentazione delle URL. Si osservi a questo proposito il seguente esempio:

http://www.miosito.com/blog/post/nome_post
Il sistema di segmentazione delle URL utilizzato dalla piattaforma sfrutta un metodo di rappresentazione basato su diverse componenti:
miosito.com/classe/funzione/identifcatore
Si analizzino le diverse componenti presenti nell’URL d’esempio:
  1. il primo segmento ("classe") rappresenta il Controller della classe che deve essere invocata;
  2. il secondo segmento ("funzione") rappresenta una funzione della classe invocata o un suo metodo sottoposto a chiamata;
  3. il terzo segmento ("identificatore") è rappresentato da una variabile (ad esempio un "ID") che dovrà essere passata alle funzioni del Controller.
Opzionalmente è possibile aggiungere un suffisso alle URL, per far questo è possibile editare il file "config.php" modificando il valore (vuoto di default) associato alla variabile $config[‘url_suffix’]; si prenda per esempio un’URL senza suffisso come la seguente:
miosito.com/index.php/viaggi/spagna/siviglia
Associando il valore ".html" alla variabile apposita del file di configurazione, sarà possibile ottenere un nuovo formato per l’URL come il seguente:
miosito.com/index.php/viaggi/spagna/siviglia.html
Naturalmente, è possibile abilitare per le URL del proprio sito Web anche il formato standard basato sulle querystring; in questo caso un’URL come quella vista in precedenza potrebbe assumere un aspetto del genere:
index.php?c=viaggi&m=spagna&id=111
Per abilitare il formato basato sulle querystring, basterà modificare il valore associato ad una variabile, denominata $config[‘enable_query_strings’], presente nel file di configurazione del framework e impostata di default su FALSE:
$config['enable_query_strings'] = TRUE;
Come è possibile osservare facilmente dagli esempi precedenti, il nome del file "index.php" viene incluso di default all’interno delle URL; per eliminarlo (su Linux) bisognerà ricorrere al ModRewrite del Web server Apache tramite un file .htaccess in cui dovranno essere inserite solo poche righe di codice:
// riscrittura delle URL per l'eliminazione di index.php 
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Fatto questo bisognerà modificare, all’interno del file config.php, la variabile $config[‘index_page’] in questo modo:
$config['index_page'] = "";
Così facendo tutte le richieste inviate al Web server verranno tradotte come se nelle URL sia presente anche "index.php", ma senza mostrarlo nella barra degli indirizzi del browser.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.