Rimuovere ID dalle URL degli articoli in Joomla!
Rimuovere ID dalle URL degli articoli in Joomla!
Extrowebsite

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 . 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'articolo
  • Itemid=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.

Impostazioni SEO Joomla!
Impostazioni SEO Joomla!

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 .

Non solo quelle illustrate nell'articolo segnalato, ma una impostazione e configurazione differente, rispetto alle versioni precedenti, per quanto riguarda la . Per completezza va detto che, sempre Joomla 3.7 ha, tra i suoi componenti di default, anche quello per le .

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 di 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...

Opzioni articoli Joomla!
Opzioni articoli Joomla!

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!

SEF Advanced Mode Joomla!
SEF Advanced Mode 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.