Trasformare le URL rendendole SEO friendly per i Motori di Ricerca.
Questa settimana impareremo come rendere le tue URL SEO friendly utilizzando il mod_rewrite di Apache. Questo modulo consente di creare URL chiare e gradevoli ai motori di ricerca anziché utilizzare URL criptici generati dinamicamente.
Ottimizzare le URL è fondamentale per migliorare la visibilità del tuo sito web. Scopri come utilizzare il mod_rewrite per creare URL leggibili e pertinenti, fornendo ai motori di ricerca informazioni chiare sulla struttura del tuo sito. Con URL ottimizzate, avrai maggiori possibilità di migliorare il posizionamento sui motori di ricerca e di attrarre più visitatori. Sfrutta il potenziale del mod_rewrite di Apache e rendi le tue URL SEO friendly.
L’intento di questo articolo è chiarire alcuni aspetti complessi e aiutare coloro che si avvicinano per la prima volta a queste problematiche a comprendere i fondamenti, fornendo vari esempi esplicativi a supporto.
Esamineremo il funzionamento di base, anche se lo strumento in questione è molto complesso e potente, consentendo praticamente di realizzare qualsiasi cosa con le URL, come il rilevamento della lingua o il reindirizzamento del traffico, e così via.
Nel frattempo, ci concentreremo su come è possibile trasformare gli URL dinamici poco chiari in URL statici, più leggibili e ottimizzati per i motori di ricerca. Vedremo come questa trasformazione possa contribuire a migliorare la visibilità e la navigazione del sito web, garantendo un’esperienza utente migliore e favorendo un migliore posizionamento sui motori di ricerca.
La prima cosa da fare, logicamente è attivare questo modulo, il mod_rewrite in genere è attivo su ogni server Apache, ma potrebbe per vari motivi essere stato disabilitato in fase di installazione e quindi non funzionare correttamente.
Quindi, in tal caso, per ovviare a tale problema portatevi nella directory di installazione di Apache, qui è presente una directory di configurazione del server denominata conf al suo interno aprite il file httpd.conf che il file in cui vengono richiamati i moduli del web server e verificate che sia presente la chiamata al mod_rewrite e che non sia commentata con il simbolo #, nel caso eliminatelo e salvate il file, ricordate di arrestare apache e riavviarlo per rendere effettiva tale direttiva, a dimenticavo verificate anche che effettivamente sia presente il modulo che dovrebbe essere situato sempre nella root del web server nella directory modules.
Verificato che il modulo rewrite di apache è correttamente configurato, la prima cosa da fare è creare il vostro htaccess nella root del vostro sito e inserire la direttiva che lo attiva che è a seguente:
RewriteEngine On
Il funzionamento di questo modulo è semplice per lo scopo che ci siamo prefissi, in quanto basterà scrivere una serie di direttive RewriteRule consecutive con la seguente sintassi:
RewriteRule URL_CON_ESPRESSIONE_REGOLARE Nuovofile [FLAG,FLAG]
Il modulo leggerà tali direttive consequenzialmente e nè testa le espressioni eseguendone le trasformazioni indicate, i FLAG servono per modificare i comportamenti ma vedremo dopo in che modo.
Le Espressioni Regolari valide per il mod_rewrite sono quelle standard valide per molti altri linguaggi di programmazione.
Innanzitutto, per inizializzare il file indichiamo la root del sito, quindi inserite dopo l’istruzione di inizializzazione del modulo rewrite, la seguente direttiva:
RewriteBase /
che sta ad indicare al modulo rewrite di trasformare le URL dal nome dominio in avanti.
Poi si indicano in sequenza una serie di regole tramite la direttiva RewriteRule, servendosi della sintassi Regular Expression, per chi non conoscesse in maniera approfondità, queste potenti espressioni di manipolazione delle Stringhe, vi indico alcune delle principali regole sintattiche, iniziamo con i caratteri jolly che vi serviranno per modificare le vostre URL:
- ^ indica l’inizio dell’URL
- $ indica la fine dell’URL
- . indica un qualsiasi carattere
- | indica una scelta tra il carattere (o gruppo di caratteri) presente a sinistra e quello a destra (esempio it|en indica il carattere “it” o il carattere “en”)
Vi faccio un esempio pratico in modo che possiate meglio comprendere quanto precedentemente descritto:
RewiteRule ^(inizio URL)http://vostrosito/(it|en)/(qualsiasi nome pagina).html$(fine URL)
È possibile indicare insiemi di caratteri cercati inserendoli all’interno di parentesi quadre:
- [abc] indica la presenza di un carattere a scelta tra “a”, “b” e “c”
- [^abc] indica la presenza di un qualsiasi carattere tranne “a”, “b” o “c” (tra parentesi quadre il carattere di accento circonflesso “^” non assume più il significato di inizio dell’URL ma di negazione dell’intera classe)
- [a-d] indica la presenza di un carattere da “a” fino a “d”, quindi “a” o “b” o “c” o “d”. Questa notazione ci tornerà comoda per indicare un qualsiasi numero.
Ovviamente è possibile combinare gli insiemi con gli indicatori di quantità come ad esempio [0-9]+
per indicare uno o più cifre.
Detto ciò, cerchiamo di focalizzare l’attenzione, sul punto fondamentale di questo modulo che sta nel travasare parte di una Stringa nel nostro caso l’URL fittizio all’URL reale che viene eseguito dal web server.
Il risultato finale si ottiene indicando nell’indirizzo fittizio tra parentesi tonde ( ) l’espressione regolare che poi sarà recuperata nella composizione dell’indirizzo reale.
Vediamo un semplice esempio di quanto descritto:
URL da trasformare: http://giovannimasucci.it/en/index.html
URL reale: http://giovannimasucci.it/index.php?lang=en
RewriteRule ^(it|en|fr|de|ru)/index.html$ index.php?lang=$1 [L]
Quindi viene indicata la URL reale e al suo interno dinamicamente il valore la parte intercettata dell’espressione regolare con il simbolo didollaro “$” seguito da una cifra numerica che indica la sua posizione.
Infine come precedentemente accennato con l’ultimo parametro il FLAG possiamo modificare il funzionamento del mod_rewrite. Vanno indicate tra parentesi quadre e separati da virgole, come possiamo osservare nell’esempio precedente. Ecco le principali:
[L]: Si usa nel caso in cui l’URL trasformato non deve subire ulteriori trasformazioni per evitare che Apache consumi risorse di sistema inutilmente.
[QSA]: Si usa per aggiunge all’URL reale la query string presente al livello della finta URL. Molto utile per portarsi dietro contenuti appesi in query string o anche variabili di cui non avevamo tenuto conto.
[NC]: valuta l’espressione regolare senza tenere conto di maiuscole o minuscole.
[C]: lega la corrente direttiva alla successiva facendole terminare correttamente entrambe o non applicandone nessuna.
URL da trasformare: https://www.giovannimasucci.it/it/blog/social_marketing/e-commerce/magento.html
approfondimento.php?lang=$1&idcontenuto=$2 [L]
URL reale:https://www.giovannimasucci.it/blog/index.php?lang=it&cont=social_marketing/e-commerce/magento.html
RewriteRule ^(it|en|fr|de|ru)/([^/]+)\.html$ /blog/index.php?lang=$1&cont=$2 [L, QSA, NC]
Un’altro esempio per recuperare un file ordinato numericamente:
URL da trasformare: http://dominio/docs/52-Nome-del-documento.pdf
URL reale: /docs/52.pdf
RewriteRule ^/docs/([0-9]+)(\.[a-z]{3,4}) /docs/$1$2 [L,QSA,NC]
Oppure se si vuole mascherare per ragione di sicurezza il linguaggio di programmazione utilizzato:
URL da trasformare: http://dominio/script.py?id=12
URL reale: /script.php?id=12
RewriteRule ^/(.+)\.py(.+)? /$1.php$2 [L,QSA,NC]
Questa regola ci permette di mascherare l’uso di PHP facendolo sembrare un altro linguaggio di programmazione lato server, Python in questo esempio.
Spero che in seguito a questo articolo, siete riusciti ad avere maggiore confidenza sia con le funzionalità base di questo importante modulo di Apache che con la fondamentale potenza delle regular expression, presente in vari linguaggi di programmazione.
Intanto vi saluto e vi dò appuntamento al prossimo articolo, nel caso vorreste approfondire ulteriormente l’argomento contattatemi pure nei seguenti riferimenti.