Rel NoFollow con JS

javascript rel nofollow

Sembra che tra le cose che il “bravo SEO secondo Google” deve sapere ci sia quella che bisogna dire chiaramente a Google quali sono i link nella tua pagina che puntano verso affiliazioni, pubblicità, ecc. magari con un rel=”nofollow”.

Quindi io mi sono subito attivato per far in modo da aggiungere un bel…

rel=nofollow

…a tutti i link verso Amazon e alle altre affiliazioni che ho attive sul mio blog.

Siccome uso WordPress, per fortuna sono riuscito a trovare un plugin che fa tutto al posto mio: Outbound Link Manager

Outbound Link Manager tiene traccia di TUTTI i link che escono dal sito da uno qualsiasi dei vostri post, e ve li elenca belli-belli.

La cosa che interessava a me è che si può impostare una “blacklist” dove inserire i domini a cui vogliamo applicare il nofollow.

Dopo aver attivato e configurato il plugin mi sono reso conto che un’affiliazione creava i link verso il proprio sito tramite un codice javascript inserito alla fine del codice html.

Ma Google legge Javascript?

Qualcuno potrà obiettare “ma questi sono link generati dal browser del navigatore, e quindi a Google non interessano”…

Sembra che Google possa leggere ed interpretare il codice javascript contenuto nelle pagine, e quindi tenerne conto nei risultati di ricerca; basta leggere cos’è scritto in un articolo di Forbes del giugno 2012. ed anche nelle linee guida per sviluppatori di Google.
In realtà però Google dice anche il contrario, anche se però poi è Matt Cutts in persona che conferma con un twit nel novembre 2011 il fatto che il GoogleBot esegua Ajax e Javascript.
Infine ci sono alcuni esperimenti che confermano parzialmente la questione.

Se io fossi Google, mi interesserei anche di tutto quanto è generato sul lato-client, perchè comunque è roba che l’utente comune vede. Se così non fosse, il webmaster più “furbo” potrebbe infarcire le proprie pagine di qualsiasi cosa senza dar nessun fastidio al proprio SEO.

Quindi ho cercato qualcosa per ovviare anche a questo, ed ho trovato il modo per aggiungere/modificare l’attributo REL in REL=NOFOLLOW a quei link – elementi A – che contenessero il dominio incriminato nell’attributo HREF.

NoFollow con jQuery

Sapendo che WordPress usa jQuery, mi sono basato su di esso e ho scritto questa righina che ho posizionato prima della chiusura del BODY, o almeno dopo lo script dell’affiliazione in questione:

$('a[href*="dominio"]').prop('rel','nofollow');

Per capire come mai la righina di codice non funzionasse solo sul blog fatto con WordPress c’ho messo 2 ore prima di scoprire che dovevo disattivare il noConflict()! Più avanti spiego tutto.

Altra ciliegina: siccome la riga da sola si “attiva” non appena viene caricata, questo non andava bene col fatto che doveva funzionare con dei link creati da un codice che veniva appena prima, e quindi avrebbe dovuto aspettare che i link venissero “effettivamente” creati prima di entrare in azione.

Ho risolto anche questo usando l’evento LOAD dell’oggetto WINDOW.

$(window).load(function() {
$('a[href*="dominio"]').prop('rel','nofollow');
});

NB: la differenza con l’evento READY sta nel fatto che LOAD fa partire il comando quando tutto il resto è stato caricato, mentre READY lo fa appena il documento ha finito di caricarsi.

Di seguito un piccolo promemoria su modi per comparare le variabili in jQuery

  • A*=B …se A contiene B
  • A~=B …se contiene la parola B delimitata da spazi
  • A^=B …se A inizia con B
  • A|=B …se A è uguale a B oppure inizia con B seguito da un trattino
  • A$=B …se A finisce con B
  • A=B …se A è uguale a B
  • A!=B …se A non è uguale a B

Disabilitare il noConflict in WordPress

L’UNICA DIFFERENZA tra il file jquery.js che WP porta con sè ed il file jquery.js scaricato di fresco dal sito originale e nell’ultima riga, dove è presente un comando in più:

jQuery.noConflict();

La modalità noConflict() consente di usare altre librerie javascript assieme a jQuery nella stessa pagina, col risultato che l’uso della variabile $ non funziona più.

Sono riuscito a risolvere anche questa questione aggiungendo una riga di codice prima del resto dello script:

var $ = jQuery.noConflict();
$(window).load(function() {
$('a[href*="dominio"]').prop('rel','nofollow');
});

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

You can add images to your comment by clicking here.