9.1. URL Brevi

Introduzione

Generalemente quando si parla di URL Brevi, in inglese Short URL, ci si riferisce ad alcune tecniche per modificare l'indirizzo delle proprie pagine web al fine di ridurne la lunghezza e renderlo più leggibile.

I motivi per utilizzare gli URL Brevi sono tanti e ancora oggetto di discussione, di conseguenza non li tratterò in questa guida. Dirò solo che normalmente lo si fa per indicizzare meglio il proprio sito e perchè gli utenti preferiscono link leggibili.

La riscrittura può essere parziale e completa, per quest'ultima si utilizza il modulo di apache mod_rewrite.

URL Brevi su Zikula

Zikula implementa di default un sistema per la riscrittura degli URL. Questo sistema prevede 3 tipi diversi di link:

  • standard, senza alcuna riscrittura
  • stile directory
  • stile file

Nel corso di questa guida utilizzeremo il sistema stile directory per fare gli esempi, parleremo di quello stile file alla fine.

Per attivare gli URL brevi è sufficiente andare nel pannello di amministrazione -> Sistema -> Impostazioni e mettere Abilita gli URLs brevi . Ricordatevi però che se scegliete lo stile file o lo stile directory senza punto d'ingresso, dovete prima copiare il relativo file (shorturls.file.htaccess per lo stile file e shorturls.directory.htaccess per lo stile directory) dalla cartella docs/ alla root del vostro sito rinominandolo il .htaccess (sì, ci va il punto davanti!)

Attenzione:  duplicare le pagine (cioè avere 2 indirizzi diversi che puntano alla stessa pagina) è dannoso per l'indicizzazione! Se il vostro sito è online già da tempo, ed è già stato indicizzato dai motori di ricerca, attivando gli URL brevi potreste ottenere un danno al posto di un beneficio! Generalmente si consiglia di scegliere uno stile di URL brevi e di attivarlo quando si pubblica il sito la prima volta, per poi non cambiarlo più.

Vediamo ora come funzionano gli URL brevi (solo per informazione, per utilizzarli vi basta attivarli). Questo è un indirizzo come si presenta normalmente:

URL standard, senza riscrittura: http://www.example.org/index.php?module=Utenti&func=logout

Riscrittura dell'URL senza mod_rewrite

Tramite una riscrittura parziale, vale a dire che non utilizzi mod_rewrite, possiamo ottenere un'indirizzo di questo tipo: 

Riscrittura dell'URL senza mod_rewrite http://www.example.org/index.php/Utenti/logout

Abbiamo così un indirizzo più breve (la differenza sarebbe stata molto maggiore se il primo indirizzo fosse stato davvero lungo) e sicuramente più leggibile.

Il meccanismo che ci mermette di implementare la riscrittura parziale è molto semplice. Infatti il webserver carica ed esegue il file index.php, il quale recupera i parametri successivi semplicemente dall'header (la variabile è $ _SERVER['REQUEST_URI'] e la potete vedere utilizzando phpinfo() ). A questo punto il sistema sa che in che ordine i parametri dovrebbero essere, quindi Zikula sa anche che pagina è stata richiesta.

Questo meccanismo permette ovviamente di passare anche parametri personalizzati, ad esempio se vogliamo caricare un forum con id=2 il link sarà simile a questo:

Riscrittura dell'URL senza mod_rewritehttp://www.example.org/index.php/Forum/viewforum/forum:2

Nota: l'URL rewriting utilizza ":" per passare i parametri, non potete quindi utilizzare variabili come "index.php?variable=filter:3" (ricordatevelo se doveste usare pagesetter e il suo sistema di filtri)

Riscrittura dell'URL con mod_rewrite

Come molti di voi già sapranno, mod_rewrite è un modulo di Apache molto utile che permette, tra le altre cose, di riscrivere gli URL. Grazie ad esso potremo quindi effettuare una riscrittura completa dell'URL e migliorare gli esempi di prima rimuovendo index.php. Come avrete sicuramente notato tutti i link che abbiamo visto contenevano la dicitura index.php, tuttavia quest'informazione è implicita in quanto tutte le pagina di Zikula passano da index.php, ripeterla è inutile.

Utilizzando mod_rewrite possiamo ottenere il seguente risultato:

URL rewriting senza mod_rewrite http://www.example.org/Utenti/logout

Nota: fate attenzione, se una delle vostre immagini dovesse essere scritta così <img src="test.png">, caricando il modulo /MyModule/main, il browser sichiederà l'immagine "/MyModule/main/test.png". Per risolvere potete utilizzare l'indirizzo completo dell'immagine o effettuare un redirect di questo tipo "/*/*/*.(jpg | png | gif)" to "$ 3. (Jpg | png | gif)."

Riscrittura dell'URL stile file

Il metodo di rewrite classico, già utilizzato nelle precedenti versioni di PostNuke, mostrerà link di questo tipo:

Riscrittura dell'URL stile file http://www.example.org/module-Forum-viewtopic-topic-2903-start-0.html

Come potete vedere il link è composto da una serie di parole (il nome del modulo e i parametri) separate da trattini. Considerate però che questa versione fa un uso maggiore delle espressioni regolari per riscrivere il link e potrebbe aumentare il carico sul vostro server.

Nota: la parola module potrebbe essere implicita come la parola index.php negli esempi precedenti, viene mantenuta per compatibilità con i link di vecchio stile.

Riscrittura dell'URL personalizzata

Zikula permette infine di personalizzare la riscrittura per un modulo in particolare. Per farlo dovete creare le funzioni encodeurl e decodeurl nel file pnuserapi del vostro modulo. La prima deve prendere in input le informazioni necessarie e restituire in output il link personalizzato, mentre la seconda deve effettuare il passo inverso.

Potete trovare un esempio di questo metodo nel modulo Pagine / Pages.

Con questo metodo potete:

  • mettere delle keywords nell'indirizzo;
  • avere diversi tipi di link per lo stesso modulo;

Inoltre, se un link non è conforme al vostro standard, potete in qualsiasi momento effettuare un redirect 301.

Questa pagina è basata sull'articolo URL rewriting on PostNuke 0.8 scritto da mumuri