Alternativa a Nofollow para hacer PR Sculpting

Hace unos dias Lino Uruñuela (@errixoa) publico un post sobre PR sculpting con JavaScript y Robots.txt recomiendo leerselo por que lo explica todo muy bien, y es que entre tanta duda en como reparte ahora mismo Google el Link Juice con el uso de rel=”nofollow” el uso de javascript para crear enlaces es una alternativa sencilla que siempre ha estado ahí.

Sabemos que Google puede seguir enlaces windows.open o windows.location.href pero supuestamente no sigue más pero…

Yo he podido comprobar cómo el bot de Google me ha estado siguiendo link dentro de un código similar a este:

<script type="text/javascript">
so.addVariable("xmlfile", "/swfs/myimage.php?cod=2345");
so.write("imgflash");
</script>

La url es de un fichero xml que se le pasa como una variable al flash a traves de javascript, y supuestamente el bot de google n lo deberia leer, pues bien en concreto a mi me indexo 700 urls como estas, leyéndolas incluso con la ruta dinamica, ¿curioso no?
Para solucionarlo bloquee el directorio /swfs desde el robots pero cada vez que entraba en GWT me encontraba que en errores de rastreo Google decia que existian 700 urls bloqueadas por robots.txt, vamos que venía a decirme que Google seguía sabiendo que estaban ahí y que podía rastrearlas.
La solución vino por partir la url lo más posible para que Google no pudiera rastrearla de la siguiente forma:

var dirfile="/swfs/";  var urlfile="myimage.php?cod_pro=2406";
so.addVariable("xmlfile", dirfile+urlfile);

A partir de ahi, los errores de rastreo fueron bajando de 700 hasta llegar a 0 ya que el bot de Google no encontraba la url.

Eso me da que pensar que el bot de Google puede intentar seguir todo enlace que se encuentre este dentro de javascript o no , quizás sirviéndose de si es válido o no por la respuesta del servidor (200 OK) .

Después de comentárselo a Lino me hizo la pregunta del millon ¿Pero repartira link Juice entre esos enlaces?, – ja, pues no lo se, habrá que hacer pruebas, que mejor manera..

Como decía, Lino ya lo explico todo muy bien como realizar esos links en javascript y así que no voy a decir lo mismo claro, podéis leer el de lino que le he puesto un link precioso arriba.

La cosa es que hay varias formas de hacer enlaces con javascript, y personalmente las que más me gustan a mi son las menos intrusivas de código javascript en el html.

Utilizando JQuery se pueden crear enlaces desde javascript no intrusivos y que el usuario pueda seguir viendo en la pagina un link normal, con su manita para clicar y todo.

Para ello solo tendríamos que crear un archivo externo e incluir en él las siguientes líneas: (ni que decir tiene que hace falta la librería Jquery)

$(document).ready(function() {
var a =$(".link");
$.each( a, function(){
if ($(this).attr('rel')=="external") {
$(this).wrap('<a href="http://' + $(this).attr('pag') + '"></a>');
} else {
$(this).wrap('<a href="' + $(this).attr('ruta') + $(this).attr('pag') + '"></a>');
}
});
});

Esto introducirá un enlace dentro de cualquier etiqueta span que tenga asignada la clase “.link” para que Google no sea capaz de seguir la url por si las moscas partimos la url, para enlaces internos, en el atributo “dir” indicamos la ruta, y en el atributo “pag”, indicamos la pagina.

<span class="link"  dir="/ruta/" pag="pagina.php">anchor text de mi enlace</span>

Y para enlaces externos incluimos el rel=external y en el atributo “pag” indicamos la url:

<span rel="external" pag="www.yahoo.es">anchor text de mi enlace</span>

En lugar de el atributo “pag” se puede utilizar cualquier otro, da igual que no sea standar por el W3C pero yo lo pongo a modo de ejemplo, cada cual que lo haga como quiera, yo solo doy la idea.

  • Buen aporte Pedro, eres un pozo lleno de sabiduria.

  • Que crack eres Pedro!!

  • Muy bueno, facil y simple.

    Perfecto para realizar Link Sculpting.

  • Víctor Perez

    Que bueno Pedro, el problema es que si le pasamos el validator de W3 lo más seguro diga que no reconoce “dir” y “pag”.

  • Pingback: uberVU - social comments()

  • Pedro M

    Gracias, a todos por los comentarios de verdad, como no solia escribir no tenia esa buena sensación de que alguien te comente algo agradable por lo que has escrito, pero esto puede ser adictivo! jaja

    @victor tienes razon sobre la validación del w3c, he estado viendo que los atributos validos para span son:
    id
    class
    title
    dir -> se utiliza para indicar la direccion del texto en realidad
    xml-lang
    Para validar el standar w3c se me ocurre que se podria utilizar el title y el dir por ejemplo, en lugar de pag y dir.

    Yo puse la etiqueta span por ser la que menos dolores de cabeza da en estas cosas, aunque podria ser cualquier otra.

    Saludos!

  • Pingback: Alternativa a Nofollow para hacer PR Sculpting()

  • Nacho

    La etiqueta dir sólo acepta los valores rtl ó ltr . Habría que eliminar la etiqueta dir y poner la url o ruta en la etiqueta title. ¿habría algún problema con este campo de cara a Google?

  • Pedro M

    Hola nacho en principio, el hecho de utilizar la etiqueta dir, es por partir la ruta de la para que el crawler no pueda detectar que es una url valida que puede seguir, como comentaba en el post lo mejor siempre es partir la url.
    Pero no hay ningun problema con utilizar el atributo title, incluso ayudarse de el atributo id.
    Habria que cambiar el codigo javascript en Jquery pero no es complicado.
    Si me dices si lo quieres para enlaces externos o internos te puedo poner un ejemplo.
    Un saludo!

  • Nacho

    Hola Pedro,

    He modificado tu código de la siguiente manera pero me encuentro con un problemilla:

    $(document).ready(function() {
    var a =$(".link");
    $.each( a, function(){
    if ($(this).attr('rel')=="external") {
    $(this).wrap('<a href="http://' + $(this).attr('title') + '" rel="nofollow"></a>');
    } else {
    $(this).wrap('<a href="' + $(this).attr('title') + '" rel="nofollow"></a>');
    }
    });
    });

    El caso es que como utilizo el atributo title para poner la URL de destino al pasar el ratón por encima del enlace aparece en el tooltip la página de destino lo cual es bastante engorroso sobre todo si es una url larga. Creo que una opción sería utilizar la etiqueta ID pero como sólo puede haber un ID ¿habría que modificar tu código e incluir todos los IDs o habría alguna manera de automatizarlo? Gracias

  • Hola Nacho, perdona pero esta semana he ido un poco de cabeza, te cuento.
    Hay forma de solucionar lo que me dices, aunque tal y como has puesto el código, no está la url partida, y habría que ver si el bot de Google sigue esa url.

    Otra cosa que no te hace falta es el rel=”nofollow”, ya que el enlace se inserta desde el DOM y no aparece en el código así que ningún crawler puede seguirlo.

    Lo que se podría hacer es lo siguiente: (te lo he resumido porque veo que no utilizas la diferenciación entre enlaces internos y externos.


    $(document).ready(function() {
    var a =$(".link");
    var titulo;
    $.each( a, function(){
    titulo=$(this).html();
    $(this).wrap('<a href="' + $(this).attr('title') + '" ></a>');
    $(this).attr('title',titulo);
    });
    });

    De esta forma lo que haces es una vez insertado dentro de la etiqueta span, coges el “anchor text” para utilizarlo como title, y así no te aparecerá la ruta al pasar el ratón por encima.

    Espero que te sirva, un saludo!

  • Existe otra forma mucho más segura de hacer link sculpting, enlazar únicamente las secciones importantes desde la home y lo mismo para todas las demás secciones…

  • Pedro M

    Javi perdona que no te haya puesto el comentario antes pero es que desde que vine a Barcelona no he tenido tiempo ni de mirar el blog,
    lo que tú dices de enlazar solo las secciones importantes desde la home es en teoria lo que se deberia hacer, pero entonces por intentar repartir el jugo de trushRank hariamos al usuario hacer más de 3 clicks en llegar a cada seccón, mi post es solo eso una alternativa para que el usuario no tenga que hacer muchos clicks, y Google no pueda seguir esos links ni contabilizarlos.
    Gracias por el comentario gatuno ;) saludos!

  • Pingback: Mi alternativa para hacer PR Sculpting | JQuery()

  • Excelente idea, aunque habría que darle un par de vueltas más no sólo para cumplir los estándares web del W3C sino para cumplir las pautas de accesibilidad web :)

    Con el W3C no habría ningún problema, pero con WAI-AAA ya es otra historia, ya que sin JS no se podrían seguir los enlaces en los que usemos esta técnica o similar…

    Un saludo,
    Alejandro Arco

  • dado que el nofollow dejo de servir para el PageRank Sculpting, me parece una alternativa muy interesante ;-)

  • Juanito

    He de reconocer que soy algo nulo con los códigos, y este no consigo hacerlo funcionar, lo que hago es lo siguiente:

    archivo dir.js (meto el código que pusistes)

    Hago un archivo 1.htmlen Head importo librería jquery.js y dir.jsLuego en body inserto los enlaces de tu ejemplo pero no funcionan..
    El de enlaces internos me manda a “undefinedpagina.php”Y el de enlaces externos que es el que me interesa ahora, no se convierte ni si quiera en enlace y pongo lo siguiente:anchor text de mi enlaceanchor text de mi enlace 

    Qué hago mal? mil perdones por mi bajo nivel de programación.