Clicky

link rel="canonical" para Joomla!

sh404sef

Un plugin y un módulo desarrollados hasta el momento

Desde que los tres grandes buscadores Google, Yahoo y Live Search dieron la noticia (12/02/2009) de una acuerdo para implementar un nuevo atributo a la etiqueta link (rel="canonical"), con el fin de mejorar el filtrado del contenido duplicado de nuestros sitios, han pasado 15 días. Tiempo que he estado probando en Joomla! 1.5 el buen funcionamiento de un módulo y un plugin, que hasta ahora se han desarrollado para insertar el rel="canonical" en nuestras páginas.

Desde el 13 de febrero tanto Word Press, Drupal y Magento también tienen implementadas sus soluciones por medio de un plugin. Abajo os dejo los enlaces para descargarlos.

Pero antes de contar mi experiencia veamos algunos conceptos:

Técnicamente rel no es un tag o etiqueta como he leido que lo definen en muchos sitios de internet, rel es un atributo del tag o etiqueta link según el lenguaje HTML:

Los atributos pueden proporcionar ciertas características a un tag (por ejemplo, altura, ancho, color, etc.), algunas veces muy importantes, que finalmente definirán cómo debe ser interpretado el tag.

En el caso del atributo rel (link-types) : Describe la relación que existe entre el documento actual y el recurso de destino. En otras palabras, define qué significado tiene el documento referido para el documento actual. Ejemplo:

rel="prev" href="/articulo1.html"
rel="next" href="/articulo3.html"
rel="copyright" href="/derechos.html"
rel="alternate" hreflang="en" href="/english-version.html"

El tag HTML <link> funciona como el tag HTML <a>, pero es definido únicamente en el encabezado del documento, y es mayormente utilizado para ofrecer información relacional acerca del mismo. Por ejemplo, puedes usar el tag HTML link para indicar en qué lugar de un capítulo este documento está ubicado, o qué documento actúa como índice para el mismo, o para especificar versiones alternativas escritas en otros idiomas o para otros medios. Ejemplo:

Chapter two‹/title>
ejemplo canonical Google

El tag HTML link es comúnmente usado para apuntar a archivos externos de hojas de estilo:
Volviendo al tema del atributo rel="canonical", Google aclara en su blog para webmasters que es una recomendación (pero que la apoyan firmemente), siendo un formato que te da más control sobre la URL que se devuelve en los resultados de búsqueda y además nos asegura que la popularidad del enlace (Page Rank) se mantiene en la versión elegida. Para el ejemplo han colocado una página de caramelos suecos en forma de pez...¿sabrán también a pescado?

El tag explican que se debe colocar en aquellas URLs duplicadas y dirigiéndolo hacia la URL que queramos sea, digámoslo así, nuestra preferida.

Dentro del código fuente de la URL duplicada:
http://www.xn--apaados-6za.es/que-es-necesario-apanar.html

deberá ir el:

Dicen además que se pueden usar rutas relativas pues son reconocidas con la etiqueta link y si incluyes un enlace base en tu documento, las rutas relativas se resolverán de acuerdo con la URL base:

Mas aclaraciones del ingeniero de Google Joachim Kupke:

- Se puede especificar una URL que redirija a una URL canónica. Google procesará la redirección e intentará indexarla.

- Nuestro algoritmo es indulgente: podemos seguir cadenas canónicas, pero recomendamos que se actualicen los enlaces que apuntan a una página canónica específica para un resultado óptimo.

- Esta etiqueta de enlace no puede utilizarse para sugerir una URL canónica en un dominio completamente diferente. Para migrar a un dominio completamente diferente, una redirección permanente (301) es más apropiada. Google por el momento tiene en cuenta sugerencias canónicas entre subdominios (o en un mismo dominio), pero no entre dominios diferentes. Así que el dueño de un sitio web puede sugerir www.example.com frente a example.com o help.example.com, pero no example.com frente a example-widgets.com.

Al final del post nos tranquilizan un poco: "si no eres capaz de implementar un enlace con designación canónica, no te preocupes; vamos a intentar hacerlo lo mejor posible para seleccionar la versión que prefieras de tus URL duplicadas y transferir las propiedades de enlaces, tal y como lo hacíamos antes".

Aquí os dejo el vídeo en Youtube con la explicación de Matt Cutts:

Bueno me he extendido un poco en la introducción, pero seguro que algo todavía se me olvida.

Para Joomla de momento sólo existen dos "parches" en código php que intentan escribir en el código fuente de la página el dichoso atributo rel="canonical", y digo que intentan porque he probado los dos y, ¿posiblemente por desconocimiento mío?, ninguno realiza su función correctamente. Son un módulo y un plugin de los cuales os dejo debajo del todo los enlaces de descarga.

Ante todo se debe tener instalado para que en teoría funcionen los "parches", el componente para URL amigables para buscadores (SEF) llamado sh404SEF ( podéis descargarlo pinchando en el nombre).  Y aquí viene la madre del cordero !!!

¡¡Ojo!! si tenéis un site bien montado y con bastantes URLs indexadas y no utilizáis el sh404SEF. Este componente es muy configurable, pero precisamente por eso hay que tener cuidado y ajustar sus parámetros, que son decenas, a la configuración que tenéis en vuestro site para la salida de las URL amigables.

Me explico con el ejemplo de lo que me ha pasado a mi (que no tenía instalado el componente). Para la configuración es conveniente que os estudiéis bien el componente antes de realizar ningún cambio. Tener en cuenta que si decide más adelante cambiar alguna opción, como por ejemplo mostrar o no las categorías en la dirección de su página, les puede afectar en el posicionamiento de su web.

Lo comento por el hecho de que cuando un buscador visitó por primera nuestras páginas las habrá indexado, y si más adelante deciden cambiar algo, el navegante que visite las páginas se encontrará con una página que mostrará el error 404. Lo cúal no es que sea grave ni nada parecido, si no que hasta que no vuelva a visitarnos el robot de por ejemplo Google, las páginas siempre llevarán a ese error , si es que no se hace un redirectpermanent de la antigua a la nueva URL, hasta que el robot haya pasado de nuevo y consolidado nuestras nuevas URLs.

Click en la imagen para ampliar
Joomla sh404SEF plugins

En el componente existe la posibilidad (ver figura de arriba) de añadir a la URL amigable generada,  el nombre (o alias) de las secciones y las categorías de nuestro site Joomla!. En mi caso mis URLs antiguas, antes de instalar el componente, eran del tipo:

https://www.xn--apaados-6za.es/113-google-cambia-favicon.html

y al instalar y configurar el sh404SEF quedaron así:

/google-cambia-favicon.html

Entonces me pasó lo que explico arriba de los errores 404 de las páginas antiguas. Estos errores se darán a cualquier visitante que acceda a nuestras páginas desde los resultados de una búsqueda en Google. La solución temporal como digo es hacer un redirectpermanent de la antigua a la nueva:

RewriteEngine On
redirectpermanent /que-tenemos-que-apanar/intenet-tutoriales-trucos/113-google-cambia-favicon.html http://www.xn--apaados-6za.es/Tenemos-que-apanar/Internet-Tutoriales-y-trucos/google-cambia-favicon.html

También es muy aconsejable (fundamental) renovar el sitemap e informarle a Google del cambio a través de las Herramientas para webmasters.

Con estas acciones no se pierde prácticamente nada de posicionamiento por nuestras palabras clave y en las SERP aparecerán las nuevas URLs en pocos días.

Una vez hayáis ajustado este componente,  y comprobado en el navegador que las URls generadas están de acuerdo a lo que deseáis,  tenemos que descargarnos bien el módulo, bien el plugin para generar en nuestro Joomla! el tag.

El Canonical URL module Joomla 1.5 está desarrollado por Andreas Berger . El módulo dispone de 10 pares de parámetros con los que la URL real, puede ser modificado para fijar las etiquetas y pueda ser generada.

En la explicación del uso del módulo, Andreas Berger (pinchar en su nombre arriba para ir a la página) pone ejemplos para dos componentes de Joomla el "JoomFish" y el "yvComment", y un ejemplo para poner el canonical en una URL específica:

Rule01: Find part of URL:
Rule01: Set part of URL : mi-URL-preferida.html

En los dos primeros componentes no he podido probarlo porque no los tengo instalados, en el ejemplo de la URL específica si, y funciona, pero el problema es que sólo hay esos 10 pares de parámetros para poder utilizar para todas nuestras URL, lo que le invalida, según mi opinión, para su uso en todo el site. Por otro lado el mismo Andreas dice en un comentario del post de presentación del módulo,  que el módulo no se ha concebido para un valor inicial al azar en una sessionid. Defecto que tiene Joomla! al generar estas URLs con id de sesión que incluso son indexadas en los buscadores (se deben eliminar de nuestros sitemap):

id de sesión de Joomla! para SERP

Con el Joomla! 1.5 Canonical Plugin he tenido la misma experiencia negativa que con el módulo. En la página "Gnome on the run" que es donde han publicado la descarga de este plugin explican lo siguiente:

"¿Cómo funciona? Pues en primera instancia se requiere para funcionar el componente sh404SEF  así que por favor asegúrese de usar sólo en los sitios que lo tienen activado. Por el momento no he creado nada para trabajar sin la extensión, pero estoy trabajando en ello! Funciona mediante la adopción de la SEF URL (del componente) y simplemente colocándolo en un enlace con la etiqueta rel = "canonical". No importa lo que tenga la entrada de la URL, o si es el largo index.php? ... sh404SEF lo limpia y luego lo pone en la etiqueta."

Esto es lo que dice Jeremy, que es el autor del post, en su página, y yo digo que en la mia no funciona. Un ejemplo en una captura de pantalla:

tag canonical, base y código fuente

Esta página de arriba aparece como resultado de la búsqueda en Google de la frase: "Instalar Pligg y cambiar el idioma al español",  y en la URL del artículo que nos muestra el buscador,  que como vemos ya la tiene indexada por la última configuración que hice en el componente sh404SEF, aparece el id de sesión: ?8dbff6e19c7b914df64d5afd74b2e554=46d19a3a07f3da3594d11a4c785728ed

Esto puede ser debido a que no actualicé el sitemap de nuevo otra vez hasta ayer, pero de cualquier forma el plugin debería, como dice el autor, al generar el tag link rel="canonical" limpiar este id de sesión y colocar la URL base de la página, cosa que no hace como señalo con las flechas y que se puede ver mejor si ampliáis la imagen de arriba. Joomla!  como vemos en el otro par de flechas si reconoce perfectamente la URL base y genera un tag adecuado.

Si funciona perfectamente el plugin al navegar entre las páginas del site, por lo que espero que una vez haya pasado el bot de Google de nuevo por toda las páginas y las indexe con las nuevas URLs esta sea una solución. (de cualquier forma estoy en contacto con Jeremy a través de email a ver que solución me da él sobre el tema).

El código php con que trabaja este plugin es el siguiente:

defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.event.plugin');
class plgSystemCanonical extends JPlugin
{
function onAfterRoute()
{
$uri = JURI::getInstance();
$url = JRoute::_($uri->toString());
$doc =& JFactory::getDocument();
$doc->addHeadLink( $url, 'canonical');
return;
}
}

Parece que Jeremy ha sacado a última hora de hoy domingo una nueva versión del plugin que corrige un error que se producía en la sindicación de las páginas (Feed RSS), aquí está el nuevo código fuente de la versión 1.2:

defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.event.plugin');
class plgSystemCanonical extends JPlugin
{
    function onAfterRoute()
    {
        $uri = JURI::getInstance();
        $url = JRoute::_($uri->toString());
        $doc =& JFactory::getDocument();
        if ($doc->getType() == "html") $doc->addHeadLink( $url, 'canonical');
    return;
    }
}
?>

No entiendo mucho de php, más bien poco muy-poco, pero yo creo que la solución está en conseguir que de alguna manera se pueda leer el enlace , que Joomla 1.5 si lo hace correctamente, y generar el a partir de ese enlace base.

Repito, que si queréis probar estas dos soluciones para el atributo rel="canonical" en Joomla!, toméis precauciones antes de utilizar alguna, pues se os puede quedar el sitio desindexado alguna semanita o más.

Si lo hacéis apoyar las URL preferidas como canónicas con un sitemap calculado y "limpio de polvo y paja" (no utilicéis "en bruto" el que os genera cualquier herramienta de la web, pues de todas las entradas que se generan hay multitud que debemos filtrar, eliminar, para ajustar el sitemap a las URL canónicas).

Para Firefox también ha aparecido un complemento que nos dice si una página que visitemos ya ha colocado en su código fuente el "canonical" sin tener que leer el código. Aparece indicado en una nueva barra del navegador que se añade a las que tenemos (En la imagen de arriba lo tengo señalado con "una manita". Es curioso que lo hayan promovido desde una página de centros de salud y balnearios. Lo podéis descargar desde: Canonical URI extension for Firefox

Implementaciones de Joomla para rel="canonical":

Canonical URL module Joomla! 1.5


Plugin rel_canonical para:    Word Press Magento Drupal

Comunicados sobre el tag rel="canonical" de :    Google Yahoo Microsoft

Post en Blog para Webmasters en español

IMPORTANTEACTUALIZACION 23 DE MAYO 2011:

Antes de corregir este artículo, bastante antiguo por cierto y en el que están rotos algunos enlaces, os dejo un plugin para escribir el

<link rel="canonical"

Está publicado en  StyleWare, por si esta página deja de funcionar he subido el archivo plg_content_canonical.zip.zip y desde el siguiente enlace podéis descargar el plugin de joomla para rel"canonical"

Una observación, este plugin crea urls relativas del tipo:

<link rel="canonical" href="/medio-ambiente/fenomenos-naturales/1591-casas-convertidas-islas-resistir-inundacion-mississippi.html" />

Para que salga delante el nombre del site, urls absolutas, deberéis modificar el archivo:

/plugins/content/canonical.php

y dejar la línea 27 como sigue:

Jesus_Caceres