Le URL di Joomla! sono, spesso, croce e delizia di chi si occupa dell'indicizzazione sui Motori di Ricerca.
L'argomento che verrà trattato nel tutorial odierno riguarda la rimozione dell'ID dalle URL degli articoli di Joomla!.
Al fine di ottenere quanto verrà descritto nell'articolo, presumo che il tuo sito Joomla! sia già configurato con le corrette impostazioni SEO.
In un articolo precedente ho trattato l'argomento inerente le impostazioni SEO Joomla! per il posizionamento nei motori di ricerca. Una ripassata non dovrebbe fare male.
Premessa per il presente tutorial: vedremo la rimozione dell'ID dalle URL di Joomla!, sia per la versione 3.6.5, sia per la versione 3.7.1
URL di Joomla! senza le impostazioni SEO
Se navighiamo un sito realizzato con Joomla!, senza toccare le impostazioni SEO, abbiamo le URL come riportato di seguito:
http://nomesito.XX/index.php?option=com_content&view=article&id=2&Itemid=108
dove
article&id=2
è l'ID dell'articoloItemid=108
è l'ID della voce di menu (item)
Una URL del genere faticherebbe non poco a scalare la vetta nei Motori di Ricerca.
URL di Joomla! con impostazioni SEO attivate
Se abilitiamo le impostazioni SEO, invece, abbiamo delle URL molto più "SEO friendly" ed i Motori di Ricerca cominceranno a considerarle in maniera differente rispetto all'esempio precedente.

Ricordarsi di rinominare il file htaccess.txt
in .htaccess
direttamente via FTP, nella root in cui è installato Joomla!, dopo aver abilitato l'opzione Riscrivi URL SEF.
Una volta attivate le impostazioni SEO, avremo delle URL tipo:
http://nomesito.XX/alias-voce-menu/ID-alias-articolo
Rimuovere l'ID dalle URL degli articoli di Joomla!
Nonostante il secondo esempio è molto meno "indigesto" per i Motori di Ricerca, appare l'ID dell'articolo. Sempre più spesso leggo, nei forum, come fare per eliminare quel numero che non è, detto francamente, molto simpatico.
A questo punto possiamo scindere in due il percorso che faremo:
- rimuovere l'ID dalle URL degli articoli di Joomla! fino alla versione 3.6.5
- rimuovere l'ID dalle URL degli articoli di Joomla! dalla versione 3.7 in poi
Rimuovere l'ID dalle URL fino alla versione 3.6.5 di Joomla!
Va precisato che si deve apportare una piccola modifica ad un file del core di Joomla! Tale file è router.php
.
Una soluzione potrebbe essere quella di salvarsi un file in locale e nel caso in cui ci fosse qualche aggiornamento, sovrascrivere il nuovo file con il nostro modificato.
Oppure, farsi una copia del file router.php
e trasferirla via FTP nella cartella in cui c'è quello originale, ma rinominarlo in un altro modo. Al momento opportuno, si sostituisce. A te la scelta.
Recuperare il file router.php
Il file router.php
gestisce, come ho scritto, la presenza dell'ID nelle URL degli articoli di Joomla!. Esso si trova al seguente percorso:
/components/com_content/router.php
Collegarsi via FTP alla root in cui è installato Joomla! Aprire la cartella com_content
, individuare il file router.php
e trasferirlo sul desktop.
Aprire il file con un editor di testo, che non sia Word. Il Notepad va bene, ancora meglio Notepad++.
Indicativamente al rigo 34 è presente il codice:
$advanced = $params->get('sef_advanced_link', 0);
sostituirlo con
$advanced = $params->get('sef_advanced_link', 1);
Portarsi, più o meno, al rigo 294. Identico codice.
$advanced = $params->get('sef_advanced_link', 0);
che va sostituito con
$advanced = $params->get('sef_advanced_link', 1);
Salvare, chiudere il file e trasferirlo via FTP nella cartella.
/components/com_content/
Aggiornare il frontend e notare che nella barra degli indirizzi non è più presente l'ID dell'articolo.
Rimuovere l'ID dalle URL in Joomla! 3.7
Qualche settimana fa è stata rilasciata la tanto attesa versione 3.7 di Joomla! Essa ha apportato nuove funzioni e caratteristiche.
Non solo quelle illustrate nell'articolo segnalato, ma una impostazione e configurazione differente, rispetto alle versioni precedenti, per quanto riguarda la creazione di un sito multilingue con Joomla! 3.
Per completezza va detto che, sempre Joomla 3.7 ha, tra i suoi componenti di default, anche quello per le componente associazioni multilingue in Joomla! 3.
Anche in questo caso, una lettura non sarebbe del tutto sbagliata. Ci si rende meglio conto delle opportunità del CMS.
Ci si attendeva anche il nuovo router di Joomla 3.7 ma, non si sa per quale motivo, è stato ritirato all'ultimo, poco prima dell'uscita dell'aggiornamento.
Tale router altro non è che il codice che mette a disposizione URL "avanzate" rispetto a quelle che si hanno fino ad ora.
Non avremmo dovuto modificare il core di Joomla! per avere URL "SEO friendly". Pare che tocca attendere la versione 3.8 se non la 4.0.
Tornando al tema dell'articolo, sorge la domanda: come fare per avere le URL senza l'ID in Joomla 3.7? Di seguito la spiegazione.
Recuperare il file legacyrouter.php
Collegarsi via FTP nella root in cui è stato installato Joomla!, fino al percorso:
/components/com_content/helpers
ed individuare il file legacyrouter.php
.
Trasferirlo sul desktop ed aprirlo con un editor di testo. Portarsi, indicativamente, al rigo 62. Troviamo il codice:
$advanced = $params->get('sef_advanced_link', 0);
che va sostituito con
$advanced = $params->get('sef_advanced_link', 1);
Al rigo 313, stesso codice
$advanced = $params->get('sef_advanced_link', 0);
che va sostituito con
$advanced = $params->get('sef_advanced_link', 1);
Salvare, chiudere il file e trasferirlo via FTP nella cartella.
Stesso ed identico procedimento. La differenza sta nei 2 files:
- router.php fino alla versione 3.6.5
- legacyrouter.php dalla versione 3.7
Rimuovere l'ID dalle URL degli articoli Joomla! 3.7 da pannello amministrativo
Questo secondo metodo è stato provato direttamente da me, in un dominio di prova, nel quale ho a disposizione una installazione di Joomla! 3.7.1
Leggendo in giro per il web, mi ha incuriosito tale metodo e l'ho messo in pratica. Posso dire che funziona ed è molto più comodo rispetto al metodo precedente. Anche in questo caso va modificato un file del core di Joomla!
Nell'area amministrativa, sezione "Opzioni - Articoli" avremo il classico pulsante "Verde / Rosso" attraverso il quale accettare o meno le URL avanzate.
Reperire il file legacyrouter.php
Con il metodo precedente è stato modificato il file legacyrouter.php
impostando su "1" le URL avanzate.
Se il file modificato è ancora sul server, trasferirlo sul desktop e riportarlo allo stato iniziale. Quindi:
Al rigo 62 dobbiamo avere:
$advanced = $params->get('sef_advanced_link', 0);
Al rigo 313 dobbiamo avere:
$advanced = $params->get('sef_advanced_link', 0);
Salvare, chiudere il file e trasferirlo via FTP nella cartella. Abbiamo ripristinato il file legacyrouter.php
.
Via FTP portarsi nella cartella "Administrator", al seguente percorso:
/administrator/components/com_content
Individuare e trasferire sul desktop il file config.xml
.
Il file config.xml
è quello che mostra le opzioni degli articoli nel pannello amministrativo.
Portarsi in amministrazione. Dal menu superiore selezionare Contenuti >> Articoli. Sul lato destro della schermata, premere il pulsante Opzioni.
Il primo tab, Articoli, mostra una serie di opzioni, quali:
- Scegli un layout
- Titolo
- Titoli ipertestuali
ecc...

Andando a modificare il file config.xml
, faremo in modo di avere un'altra scelta per quanto riguarda le URL avanzate. La metteremo dopo la prima, Scegli un layout. Possiamo anche decidere di metterlo ancora più verso il basso. Non inficia il risultato.
Aprire il file config.xml
con un editor di testo.
Nella parte iniziale abbiamo:
fieldset name="articles" label="JGLOBAL_ARTICLES" description="COM_CONTENT_CONFIG_ARTICLE_SETTINGS_DESC"
Immediatamente dopo c'è:
field name="article_layout" type="componentlayout" label="JGLOBAL_FIELD_LAYOUT_LABEL" description="JGLOBAL_FIELD_LAYOUT_DESC" menuitems="true" extension="com_content" view="article"
Dopo la chiusura del tag xml
del field
appena riportato, scrivere:
<field name="sef_advanced_link" type="radio" class="btn-group btn-group-yesno" default="0" label="Sef Advanced Mode" description="Remove ItemID from Content URL" showon="show_title:1"> <option value="1">JYES</option> <option value="0">JNO</option> </field>
Salvare il file config.xml
e trasferirlo sul server, nella sua cartella.
Accedere nuovamente in amministrazione, portarsi nelle Opzioni degli articoli e, se tutto è stato fatto correttamente, abbiamo la nuova scelta per quanto riguarda la rimozione degli ID dalle URL degli articoli di Joomla!

Aver apportato una modifica al file config.xml
, sta ad indicare che se dovessero esserci aggiornamenti al core di Joomla! e dovesse essere interessato anche tale file, la scelta per le URL Advanced Mode si perderà. Anche in questo caso consiglio di avere una copia o in locale oppure nella cartella:
/administrator/components/com_content
Al momento opportuno, si sostituisce.
In attesa del nuovo router in Joomla! 3.8 o 4.0, possiamo divertirci in questo modo. Ci vuole solo qualche secondo per fare la modifica.