Url Rewriting in Joomla PDF Stampa E-mail
Abilitare gli indirizzi 'amichevoli' (friendly URLs) in Joomla non è un'impresa impossibile, anzi! Se avete un server su Apache con il modulo per l'URL Rewriting (chiamato, per l'appunto, mod_rewrite.so), avrete solo bisogno di installare uno dei numerosi moduli (per Joomla) disponibili per questo scopo (in questo caso, OpenSef è consigliato, in quando è gratuito e possiede anche altre interessanti funzionalità aggiuntive).



Per prima cosa, speghiamo cosa intendiamo per indirizzi amichevoli. Di default, le pagine di joomla hanno degli indirizzi davvero brutti, pieni di simboli come ?,=, numeri, lettere, etc... che di certo non sono amichevoli nè per l'utente nè per il motore di ricerca: non fornisco infatti alcuna informazione sul tipo di contenuto che si andrà a trovare, nè tantomeno sono facili da ricordare.

La riscrittura degli indirizzi serve a cambiare un indirizzo tipo http://www.miosito.com/index.php?option=com_content&task=blogsection&id=4&Itemid=26 in uno tipo www.miosito.com/informazioni. Non male eh? In questo modo, il motore di ricerca può premiare la pagina qualora venga ricercata la keyword "informazioni", e l'utente non avrà problemi a ricordarsi questo indirizzo.

Vediamo ora come fare: per prima cosa, se siamo in hosting, accertiamoci presso il nostro fornitore che il mod_rewrite sia abilitato. Se invece abbiamo piena padronanza del server, dobbiamo editare il file httpd.conf e decommentare (ovvero cancellare il carattere #) la linea contenente la stringa LoadModule rewrite_module e riavviare il server: a questo punto, il modulo verrà caricato. Dovrete anche verificare che la direttiva AllowOverride sia impostata ad "Any" piuttosto che a "None", altrimenti non sarà possibile utilizzare il file .htaccess che vedremo in seguito, in quanto non saremmo abiliatati a sovrascrivere le regole dell'httpd.conf.

Il file .htaccess andrà editato con un qualunque editor di testo e posizionato nella cartella in cui è installato Joomla. Il contenuto di questo file, nel nostro caso, dovrà essere questo:


## OpenSEF Simplified htaccess File

## Can be commented out if causes errors
Options +FollowSymLinks

## enable mod_rewrite engine
RewriteEngine On

## If Joomla is installed in the web server root
## RewriteBase /
## If Joomla is installed in a sub-directory
## RewriteBase /directory_name_here
RewriteBase /

## Begin 3rd-Party or OpenSEF Section
#RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR]  ##optional - see notes##
RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php
## End 3rd-Party or OpenSEF Section

## Joomla Security Section (has nothing to do with SEF/SEO)
## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
## End - Rewrite rules to block out some common exploits

L'unico parametro da modificare è il RewriteBase: se joomla non si trova nella cartella radice, sarà necessario impostare il percorso assoluto.

A questo punto, abilitato il sistema di URL Rewriting di Joomla (lo trovate nelle opzioni globali) e attivate OpenSef (le opzioni di configurazione di default, nella maggior parte dei casi, vanno più che bene): se avete fatto tutto correttamente, adresso avrete anche voi le vostre 'url amichevoli'!

Simone Frattegiani