Ottimizzare i link per Google: i Canonical URLs

Questo è un post tecnico di 6 anni fa. Le istruzioni potrebbero non essere più valide.

Note
Dalla versione 2.9 di WordPress questa funzione è implementata nel core, per cui non è più necessario aggiungerla.

google150Cosa sono i “Canonical URLs”? Una rapida occhiata alla pagina di Wikipedia e in particolare al paragrafo Normalization_process ci dovrebbe illuminare abbastanza, tanto da farci prendere le dovute precauzioni. :) In poche parole si tratta di questo: una data pagina potrebbe essere raggiungibile attraverso distinti indirizzi, ad esempio:

  1. http://www.aldolat.it/miopost/
  2. http://www.aldolat.it/miopost/comment-page-1/
  3. http://www.aldolat.it/miopost/comment-page-2/

ecc., e tutti con o senza trailing slash (/), con tutte le lettere maiuscole e minuscole, ecc. Tutto questo comporta che lo stesso identico articolo possa comparire nei motori di ricerca sotto diversi indirizzi. Google ci dà la possibilità di definire quale sia una volta per tutte l’indirizzo che preferiamo per ogni pagina/post creato utilizzando il tag <link> all’interno del tag <head> di ogni pagina. Lo possiamo fare in modo semplice modificando il file del nostro tema.

Dal backend di WordPress modificate il file header.php del tema in uso e subito prima del tag di chiusura </head> inserite queste righe:

<?php global $wp_query;
  if (is_single() || is_page()) {
    echo '<link rel="canonical" href="' . get_permalink($wp_query->post->ID) . '" />';
  } ?>

Salvate il file, aprite una pagina statica o un post e osservate il codice generato (da Firefox CTRL+U); scorrete le righe fino al tag </head> e accertatevi che vi sia l’output corretto del codice inserito prima, vale a dire una riga del tipo:

<link rel="canonical" href="http://www.miosito.it/2006/miopost/" />

Con estrema semplicità adesso Google saprà che tutti i duplicati fanno riferimento a un link “canonico”. Nel link all’Official Google Webmaster Central Blog trovate anche una serie di FAQ interessanti.

[EDIT]
Si intende che potrete vedere il codice HTML generato dalle righe di PHP solo nelle pagine singole degli articoli o in quelle statiche (com’è giusto che sia: sono quelle le pagine che hanno il link “canonico” o “sorgente”). Non l’avevo fatto notare a modo nel post.

Pubblicato da

Aldo Latino

Aldo Latino usa con entusiasmo Linux nelle distribuzioni Fedora e Ubuntu, è un appassionato di WordPress e si diletta a fare il blogger. Ha anche una lista dei desideri. Per altre informazioni visita la sua .

8 pensieri riguardo “Ottimizzare i link per Google: i Canonical URLs”

  1. Ciao Aldo,

    ho trovato molto interessante questo articolo, non ero per nulla a conoscenza dei Canonical Urls e della pratica per specificare a google l’url ‘preferito’. Ho approfittato subito del tuo codice e l’ho implementato su Linux Feed. Dato che però nel mio caso la maggior parte delle pagine visualizzate sul sito sono riferite alle categorie e non ai post ho pensato di riadattare il tuo script aggiungendo anche i casi appunto per le categorie ed i tag. Anche per queste pagine infatti esiste il problema dello slash finale e del case.

    Questo è quello che ho ottenuto tendendo sott’occhio il Codex di Wordpress.

    <?php global $wp_query;
      if (is_single() || is_page()) {
        echo '<link rel="canonical" content="' . get_permalink($wp_query->post->ID) . '" />';
      } elseif(is_category()) {
        $cat=get_the_category();
        echo '<link rel="canonical" content="' . get_category_link($cat[0]->cat_ID ) . '" />';
      } elseif(is_tag()) { 
        $wp_query->in_the_loop = true;
        $posttags = get_the_tags();
        foreach ($posttags as $postag) 
        if ($postag->name == single_tag_title("", false))
        $idv = $postag->term_id;
         echo '<link rel="canonical" content="' . get_tag_link($postag) . '" />';
    }
     ?>

    Come puoi vedere a differenza di quello delle categorie, il procedimento per ottenere l’url del tag non è dei più lineari, diciamo anzi che è decisamente brutto, ma non ho trovato funzioni migliori da utilizzare fuori dal loop. Conosci per caso qualche altro metodo più pulito?

    Spero questo piccolo contributo possa servire a qualcun altro che come me deve dare molta importanza alle categorie.

  2. Ciao Andrea,
    mi sfugge qualcosa circa le tue esigenze, nel senso che non ho capito cosa ti serve. Tu vuoi che i link degli articoli “feedati” rimandino ai siti dei rispettivi autori?

    P.S. Ho l’impressione che WP abbia segato qualcosa nel tuo codice. Puoi controllare? Meglio usare un pastebin.

  3. Ciao Aldo,

    no semplicemente volevo ampliare il tuo script, che scrive il ‘link rel=”canonical”‘ per i post, implementandolo anche per le pagine delle categorie e per i tag.

    Non mi ero accorto della mangiatura di codice, ecco quello originale

    http://pastebin.com/m4efccb7e

    E grazie per la correzione dell’errore :)

  4. Però, perdonami, non ha senso, secondo me. :)
    Il link “canonico” va indicato solo per il post singolo e per la pagina statica, proprio perché questi due elementi sono le fonti di qualsiasi altro modo di visualizzarli altrove, fossero in una ricerca, in un re-post su Tumblr, su Facebook, ecc., come anche in un servizio di raccolta feed RSS come Linuxfeed.

    Le pagine %category% e %tag% sono come collettori o, meglio, sono esse stesse delle ricerche interne che comunque rimandano al post o alla pagina originari.

    È così, Andrea, o sbaglio? :)

  5. Forse avevo frainteso l’utilizzo dei link canonici. Pensavo che fosse la definizione di un url preferito per qualsiasi tipo di pagina. Per questo motivo volevo applicarlo anche agli archivi delle categorie e dei tag.

    Tali pagine formano per Linux Feed circa l 80% del traffico in questo momento e spesso mi sono trovato di fronte a contenuto duplicato causato dal case delle url e dal trailing slash finale inserito o omesso. Pensavo che indicando il link canonico anche per questi tipi di pagina ne avrei tratto giovamento…

  6. Pingback: franz enzenhofer

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>