In questa guida affrontiamo un argomento cruciale per chiunque operi nel mondo del web: i parametri URL e il loro impatto sulla SEO. Vi spiegherò in modo semplice ma approfondito come questi piccoli dettagli dell’URL possono fare la differenza nel posizionamento del vostro sito sui motori di ricerca. Da come ordinare i risultati di una ricerca fino alla gestione della paginazione, vi guiderò attraverso tutto ciò che c’è da sapere per sfruttare al meglio questi strumenti. Preparatevi a scoprire alcuni trucchi del mestiere che potrebbero trasformare il modo in cui gestite il vostro sito. Buona lettura!
Cosa sono i parametri URL
Risposta breve: un parametro URL è quella parte di URL che segue il punto interrogativo.
Risposta lunga: in ambito web, una query string / stringa di ricerca / parametro URL è la parte di un URL (Uniform Resource Locator) contenente dati che non si adattano convenientemente a una struttura gerarchica di percorsi, come ad esmepio /cartella_1/cartella_2/.
La query string include due campi: il parametro ed il suo valore. Questi campi vengono aggiunti ad un URL di base, ad esempio quando sia invia un form compilato oppure applicando un filtro ad un listato di prodotti all’interno di un sito eCommerce.
Un web server può gestire una richiesta HTTP leggendo un file dal suo file system in base al percorso dell’URL, oppure può gestire la richiesta utilizzando una query string (parametro), insieme alla parte antecedente dell’URL.
La sintassi del parametro URL non è formalmente definita, si può tuttavia definire standard (perché implementata in tutti i browser e nei linguaggi di scripting) il seguente schema:
?colore=verde
L’URL completo è composto dai seguenti elementi:
[protocollo (HTTP/HTTPS)] + [(sotto)dominio ((www.)esempio.com)] + [URL path (/scarpe)] + [parametro (&colore=verde)]
Si possono concatenare più parametri con l’utilizzo del carattere “&”.
?colore=verde&ordinamento=prezzo
Perché vanno gestiti i parametri URL per una corretta SEO
Alla base dell’indicizzazione nei motori di ricerca c’è sempre il singolo URL. Ogni URL, potenzialmente, può essere indicizzato.
L’indirizzo http://www.esempio.com/scarpe è diverso da http://www.esempio.com/scarpe?colore=verde. Se Googlebot, navigando il sito, trovasse link ad entrambi gli URL, potrebbe decidere di indicizzare tutte e due le pagine. Il risultato non sarebbe buono dato che avremmo due pagine identiche indicizzate.
I parametri vengono usati per tante funzioni differenti all’interno di un sito web. A seconda della funzione specifica del parametro è necessario valutare se l’URL generato sia da indicizzare oppure da escludere da scansione ed indicizzazione. Detto più precisamente, bisogna decidere quale parametro mantenere nella tag rel canonical.
Per una buona SEO è importante gestire i parametri per migliorare indicizzazione e crawl budget ed evitare così che i motori di ricerca indicizzino pagine indesiderate e duplicate. Il crawl budget dei bot verrà quindi dedicato alla scansione di pagine canoniche (e utili).
Funzioni tipiche dei parametri URL
I parametri URL vengono usati da webmaster e sviluppatori per diversi finalità. I CMS fanno utilizzo unico dei parametri quindi sarà tuo compito capire la funzione di ciascun parametro che incontrerai durante i tuoi SEO Audit.
Vediamo nel dettaglio tutte le possibili funzioni che può avere una query string, quale deve essere indicizzato e quale escluso.
Ordinare
Una delle funzioni più comuni per un parametro è l’ordinamento dei risultati in una pagina di listing, come ad esempio ordinare i prodotti per prezzo.
Canonical: http://www.esempio.com/scarpe
Considerazioni: l’obiettivo è non intasare il database di Google con pagine uguali, che non aggiungono alcun valore a quanto già indicizzato.
Una categoria di un sito eCommerce, con o senza i prodotti ordinati per prezzo, contiene sempre gli stessi elementi. Non avrebbe senso far indicizzare la pagina con il parametro, dato che risulterebbe una pagina duplicata. Per questo motivo i parametri di ordinamento solitamente non si fanno indicizzare, quindi vanno esclusi dal tag rel canonical.
Circoscrivere
I parametri si possono usare per circoscrivere i risultati, ad esempio per una specifica categoria o caratteristica.
In un blog questo filtro potrebbe selezionare tutti gli articoli di un anno. In un sito eCommerce il filtro potrebbe circoscrivere i prodotti di un colore o di una marca.
Canonical: http://www.esempio.com/scarpe?brand=nike
Considerazioni: i parametri che circoscrivono sono molto importanti, in diversi casi si preferisce usare una struttura URL a cartelle invece del parametro. Nel caso in cui questo tipo di URL crei contenuti utili e ricercati dagli utenti, conviene farli indicizzare.
URL con parametro che circoscrive si fanno indicizzare quando la pagina filtrata che si genera corrisponde a ricerche frequenti online, ad esempio “scarpe nike”. E’ importante che title tag, meta description e testo di supporto di queste pagine siano specifici per il valore del filtro attivo.
Per assicurare che la pagina venga indicizzata, il tag rel canonical deve includere il parametro nell’URL.
Non si fanno indicizzare URL con parametri che generano pagine duplicate o che non corrispondono a ricerche frequenti degli utenti. Ad esempio, un parametro che imposta la misura delle scarpe http://www.esempio.com/scarpe?numero=37 genererebbe una pagina che difficilmente farebbe traffico organico. Tu cerchi “scarpe nike 42”? Io no, il numero lo imposto sulla pagina del modello.
Per evitare l’indicizzazione il tag rel canonical non deve includere il parametro nell’URL.
Potrebbe avere senso far indicizzare selezioni di numeri particolari, di calzature difficili da trovare, come ad esempio scarpe grandi extra-size. Come hai visto non ci sono regole fisse, è importante valutare la funzione del parametro e ragionare sui contenuti che si vanno a generare. Se creano valore è opportuno farli indicizzare, altrimenti meglio di no.
Specificare
Un altro utilizzo comune per i parametri è specificare un elemento da visualizzare, che può essere una scheda prodotto, un articolo del blog, una categoria, un profilo utente o qualsiasi altra cosa.
Canonical: http://www.esempio.com/scarpe?id=123
Considerazioni: i parametri che specificano generalmente vengono fatti indicizzare dato che definiscono univocamente un elemento. Verifica che title tag e meta description siano unici per ogni valore di id. Se id specifica il modello di scarpa, tutta la pagina deve essere dedicata a quel modello: meta tag e contenuto.
In certi casi non vengono fatti indicizzare, ad esempio quando sono disponibili Friendly URL alternativi verso cui canonicalizzare, oppure nel caso in cui questo parametro generi contenuti di bassa qualità. Anche in questo caso analisi e ragionamento ti aiuteranno a trovare la soluzione migliore per gestire il parametro.
Tradurre
Non tutti usano i ccTLD dedicati oppure un gTLD con un sistema di URL a cartelle per gestire un sito multi lingua. Qualcuno usa i parametri URL. Qual è il metodo migliore di gestire questi parametri di traduzione per la SEO?
Canonical: http://www.esempio.com/scarpe?lang=it
Considerazioni: i parametri di traduzione devono essere indicizzati se vuoi far indicizzare il sito multi-lingua. Il tag rel canonical deve includere il parametro di traduzione e la stessa logica deve essere rispettata nella tag alternate hreflang.
Numerare le pagine
I parametri possono venire usati anche per gestire la paginazione di un archivio.
Canonical: http://www.esempio.com/scarpe?page=3
Considerazioni: i parametri di paginazione devono essere indicizzati altrimenti i motori di ricerca si perderebbero tutte le pagine dell’archivio.
Tracciare le visite
I parametri vengono spesso usati per tracciare le visite in piattaforme di web analytics, ad esempio quando si condivide un contenuto sui social, per email oppure in campagne PPC.
Canonical: http://www.esempio.com/scarpe
Considerazioni: i parametri di tracciamento, come quelli generati con Campaign URL Builder di Google, non modificano il contenuto visto dall’utente, pertanto questi URL parametrizzati non dovrebbero essere indicizzati dai motori di ricerca. Assicurati inoltre che questo tipo di parametro non sia incluso nel tag rel canonical.
Parametri multipli
In alcuni casi possono essere attivi due o più parametri contemporaneamente. Il webmaster deve decidere, come visto sopra, quali parametri mantenere nel tag rel canonical, quali escludere, ed in questo caso anche l’ordine di priorità dei parametri – ovvero l’ordine con cui vanno appesi all’URL.
Canonical: http://www.esempio.com/scarpe?brand=nike&page=2
Nell’esempio ho rimosso dal tag rel canonical il parametro di tracciamento utm_source. Ho inserito per primo il parametro brand e poi il parametro page. Una volta decise le priorità, queste devono essere mantenute tali in tutti gli URL del sito. Eventuali inversioni possono creare duplicazioni nell’indice dei motori di ricerca.
Metodi SEO per gestire i parametri con PRO e CONTRO
Il miglior metodo per gestire i parametri è implementare correttamente la tag rel canonical. Ti mostrerò anche altri metodi per ridurre l’impatto dei parametri indesiderati, ma sono secondari e non andrebbero mai preferiti al tag rel canonical.
1. Rel canonical
Rel canonical è un tag che si posiziona nella sezione <head> dell’HTML. Questa tag definisce l’URL univoco di riferimento, l’URL che i motori di ricerca devono usare in fase di indicizzazione e posizionamento della risorsa che lo contiene.
Quando Googlebot incontra un URL come questo http://www.esempio.com/scarpe?utm_source=ppc e scansionandolo legge un tag rel canonical http://www.esempio.com/scarpe assegnerà all’URL canonico l’indicizzazione ed il posizionamento. Il parametro non presente nel tag rel canonical non verrà indicizzato ma potrà comunque essere scansionato dai bot.
Il tag rel canonical è accettata da tutti i motori di ricerca e dovrebbe essere il primo metodo per gestire i parametri del proprio sito web.
- Ha effetto sull’indicizzazione.
- E’ il metodo consigliato dai motori di ricerca.
- Non risparmia crawl budget.
2. Google Search Console
Google Search Console ha una sezione dedicata alla gestione dei parametri in “Scansione > Parametri URL”. Con questo strumento è possibile istruire Googlebot, spiegandogli la funzione di ciascun parametro che ha incontrato durante la scansione del sito web.
Per istruire Googlebot clicca su “modifica” a lato di ciascun parametro individuato.
- Se il parametro è da indicizzare devi selezionare: “Si, modifica, riordina o limita i contenuti della pagina”, poi seleziona la funzione del parametro (ordinare, circoscrivere, specificare, numerare le pagine, tradurre, …) ed infine spunta l’opzione “Ogni URL” per chiedere a Googlebot di scansionare tutti gli URL con quel parametro.
- Se il parametro non è da indicizzare devi selezionare: “No, non influisce sui contenuti della pagina”. In alternativa puoi scegliere “Si, modifica, riordina o limita i contenuti della pagina”, definire una funzione e poi selezionare “Nessun URL”.
Questo metodo ha impatto solo sulle scansioni di Googlebot, quindi non avrebbe efficacia su Bing, Yahoo e tutti gli altri motori di ricerca. Per questo motivo consiglio sempre di impostare i parametri su Google Search Console soltanto dopo aver implementato correttamente il tag rel canonical. Così facendo sfrutterai tutti i vantaggi del tag rel canonical, più il vantaggio di salvare crawl budget.
- Salva risparmia budget.
- Effetto valido sono per Googlebot.
- Non ha effetto sull’indicizzazione.
3. Rel nofollow
Il tag rel nofollow applicata ad un link interno chiede ai motori di ricerca di non seguire quel link e non passare PageRank, di conseguenza l’URL di destinazione verrà ignorato e non verrà scansionato. Se però quell’URL è linkato da altre parti senza nofollow, oppure è presente nella sitemap.xml, allora quell’URL verrà scansionato ed indicizzato.
Per la gestione dei parametri, il tag nofollow dovrebbe essere usata quando non ci sono altre alternative.
- Salva parte del crawl budget.
- Non ha effetto sull’indicizzazione.
4. Disallow robots.txt
La direttiva Disallow del robots.txt chiede agli spider dei motori di ricerca di non scansionare la cartella oppure l’URL definito. Il Disallow non preclude l’indicizzazione ma impatta solo sulla scansione.
Come per il tag rel nofollow, questo metodo non dovrebbe essere la prima scelta per gestire i parametri URL.
- Risparmia crawl budget.
- Non ha effetto sull’indicizzazione.
5. URL Fragment (#) Hash
L’ultima soluzione per la gestione dei filtri è quella di usare un URL fragment, cioè inserirli nell’URL dopo il cancelletto.
Un frammento è un riferimento interno di pagina, a volte chiamato name anchor. Appare alla fine di un URL e inizia con il carattere cancelletto (#) seguito da un identificatore. Si riferisce a una sezione all’interno di una pagina web.
Nei documenti HTML, il browser cerca un tag anchor con un attributo name che corrisponda al frammento.
Ci sono alcune cose sui frammenti, la più importante potrebbe essere che non vengono inviati nei messaggi di richiesta HTTP.
Esempio di URL fragment utilizzato come filtro:
https://www.esempio.it/scarpe#colore=rosso
Googlebot non scansiona URL con hashbang (cancelletto). Questo metodo quindi aiuta a gestire il crawl budget ed evita la duplicazione di contenuti.
- Risparmia crawl budget.
- Evita la duplicazione.
- L’URL generato dal filtro è condivisibile.
- Nessun contro.
Linee guida SEO
Cosa considerare durante lo sviluppo di un sito web che utilizza parametri per filtrare una pagina di listing? Vediamo un esempio pratico.
Partiamo da un ipotetico URL base di una pagina di listing che elenca le schede dei gommisti in Italia:
https://test.officine.it/gommista/
I filtri permettono di filtrare per diverse caratteristiche delle officine, come la località, i servizi offerti, le reti di appartenenza e altro.
Ordinare i parametri
I filtri applicati all’URL dovrebbero seguire un ordine alfabetico, ovvero il parametro ordinamento=x è messo prima nell’url rispetto ad esempio a tipologia=z. Questo per evitare che lo stesso URL possa apparire due volte con parametri invertiti (sarebbe doppio lavoro di crawling per gli spider).
Non sarebbe ottimale avere una situazione dove lo stesso contenuto viene restituito su URL differenti:
https://test.officine.it/gommista?localita=milano&rete=magnetimarelli
https://test.officine.it/gommista?rete=magnetimarelli&localita=milano
Canonicalizzare i parametri
Ora alla nostra pagina di listing applichiamo il filtro rete, località e prestazione:
https://test.officine.it/gommista?localita=milano&prestazione=convergenza&rete=magnetimarelli
canonical: https://test.officine.it/gommista/
Il tag rel canonical punta alla pagina madre di listing, dato che la pagina filtrata risulterebbe come contenuto duplicato della madre.
Un domani si potrebbe inserire in canonical alcuni parametri per farli indicizzare. Ad esempio, se si notasse un traffico interessante su query come tipologia + rete (Gommista + Magneti Marelli) , allora avrebbe senso fare indicizzare il parametro reti:
https://test.officine.it/gommista?localita=milano&prestazione=convergenza&rete=magnetimarelli
canonical: https://test.officine.it/gommista?rete=magnetimarelli
In tal caso sarebbe opportuno che il parametro reti modifichi i meta tag (title e description) e magari un testo di intro specifico per “gommisti della rete magneti marelli”.
Scelta multipla? No grazie
Altra cosa da tenere a mente sui parametri è valutare quante scelte per tipologia abilitare. Ad esempio sarebbe ideale poter attivare una sola rete per volta, ed evitare che l’utente ed il sistema abilitino la scelta multipla.
Perché? Perché si genererebbero centinaia di migliaia di combinazioni di URL che Google poi si metterà a scansionare. Limitare la scelta di un parametro per tipologia limita la combinazione di URL.
Esempio corretto con una scelta singola per parametro:
https://test.officine.it/gommista?localita=milano&rete=magnetimarelli
Esempio non ottimale con scelta multipla per lo stesso parametro:
https://test.officine.it/gommista?localita=milano&localita=monza&rete=magnetimarelli
Questi aspetti credo sia importante considerarli durante lo sviluppo di un sito web che usa listing e filtri con parametri URL.
Evita le lettere maiuscole e caratteri non ASCII
Un errore che vedo spesso compiere dai dev è usare maiuscole e minuscole assieme in URL e parametri.
La cosa migliore da fare è usare sempre le lettere minuscole senza caratteri speciali (non ASCII). Usare solo lettere minuscole semplifica la gestione tecnica del sito. Ad esempio mi capita di trovare URL e link che usano le maiuscole ed i relativi tag canonical usano solo lettere minuscole. Queste misconfigurations creano problemi lato SEO e andrebbero evitate.
FAQ
Perché usare le stringhe di query?
Le stringhe di query possono essere utilizzate per trasportare quasi qualsiasi tipo di dati ai server web per un’ampia gamma di scopi. Qualsiasi parametro di stringa di query aggiunto all’URL digitato nella barra degli indirizzi del browser web verrà probabilmente catturato e registrato insieme al resto dell’URL da un server web che risponde.
Google indicizza le stringhe di query?
Google legge la stringa dell’URL contenuta dopo il parametro di query. Se utilizzi un parametro di query ?, Google leggerà la stringa URL rimanente e questo non blocca la scansione o l’indicizzazione. Tuttavia, Google ignorerà tutto ciò che segue un parametro #.
Quando dovrei usare i parametri di query?
I casi d’uso comuni per i parametri di query includono la rappresentazione del numero di pagina corrente in una raccolta paginata, criteri di filtro o criteri di ordinamento. Nello sviluppo web, i parametri di query vengono utilizzati all’interno di un URL come descritto sopra, ma possono anche essere utilizzati in richieste API che recuperano dati.
Quanto può essere lunga una stringa di query?
La lunghezza massima della stringa di query, in numero di caratteri, è di 2048.
In questa guida abbiamo visto alcune strategie per gestire i parametri per una corretta SEO. Ora esegui una scansione del tuo sito, individua tutti i parametri e definisci la loro funzione. Ci sono funzioni che è opportuno far indicizzare e altre che è meglio canonicalizzare? Con queste informazioni sei in grado di verificare da solo se stai facendo indicizzare le pagine corrette o se puoi aiutare i motori di ricerca a non fare confusione.
Buona scansione!
Commenti |10
Lascia un commentoOttimo articolo come sempre. Chiaro, preciso e ben scritto. Complimenti!
Grazie mille Marco!
Interessante, specifico e con soluzioni pratiche. Cosa chiedere di più? Complimenti, bell’articolo! ;)
Grazie mille Sergio per il prezioso supporto :)
Ottimo come sempre e su un argomento a volte ostico. Provo a farti un paio di domande:
A. Ovviamente le pagine generate da filtri sono dinamiche e non raggiungibili quindi non possiamo intervenire per impostare il Canonical. Va fatto da htacess?
B. Moltissimi blog anche autorevoli a livello seo, per le pagine inseriscono sempre il Canonical alla pagina principale, non lasciando quindi indicizzare le pagine successive (questo viene fatto di default anche da yoast, non che sia segno di competenza assolutamma e’ solo un esempio).. per quale motivo secondo te?
Ciao Simone, le pagine dinamiche, anche se non esiste un file html, possono comunque essere customizzate con regole, un developer la può sicuramente aiutare in questo.
In merito al canonical – è un errore non inserire in questa tag la paginazione, anche questo blog è così, purtroppo (ho scritto più volte a StudioPress – Genesis, ma non hanno mai cambiato l’impostazione).
La paginazione deve essere presente nel tag canonical, sarà poi il tag rel next/prev a comunicare a Google che si tratta di un archivio unico.
UPDATE: oggi Google se ne accorge da solo, rel prev/next sono diventati obsoleti.
Grazie per il commento, a presto!
Ciao Giovanni,
ottimo articolo, tutto molto chiaro.
Qual è invece il tuo punto di vista tra mantenere url parametriche o staticizzarle riscrivendole? I vantaggi delle seconde in termini di accessibilità, miglior CTR etc valgono l’impegno necessario e i possibili rischi connessi all’attività?
Grazie :)
Ciao Paolo grazie della domanda.
L’impatto di URL SEO friendly, a mio parere, non è trascurabile sul lungo periodo. Tutto però dipende dal peso che ha il sito sul quale devi lavorare. Se il sito è importante, sai che ci lavorerai per anni e lo dovrai portare avanti con risultati, tanto vale dedicare del tempo alla riscrittura di URL.
Se è un sito che “vale poco”, non ti interessa e non ci lavorerai mai più, forse non vale la pena fare implementazioni complicate.
Spero di averti dato una ragione per fare URL SEO friendly :) a presto!
Ciao Giovanni, complimenti per l’articolo e la chiarezza espositiva. C’è un motivo particolare per il quale non hai menzionato tra le alternative il ricorso a un meta robots noindex? Non permette di risparmiare crawl budget ma allo stesso tempo potrebbe essere un metodo efficace per evitare di indicizzare contenuti duplicati o di poco valore (come alcuni filtri). Grazie
Ciao Dario grazie per la domanda interessante.
Il tag NOINDEX evita che le pagine filtrate (URL parametrizzati) finiscano nell’indice di Google, ma non migra verso la pagina madre (canonica) la sua autorevolezza ed i suoi fattori di ranking.
Se una pagina filtrata e con NOINDEX viene condivisa e riceve backlink, tutto quel “juice” in entrata finisce nel nulla. Non porti alcun valore alla pagina canonica.
Con il tag rel canonical invece si “sposta” l’autorevolezza verso la pagina madre, che è molto meglio.