jueves 3 de noviembre de 2011

Problema: fb_xd_fragment=

Si tienes un sitio web y utilizas los plugins sociales de Facebook seguramente te esta ocurriendo esto, una pagina de tu sitio que termina con fb_xd_fragment= cargada cientos de veces por un solo usuario con Internet Explorer o un Firefox viejo.
La solución es actualizar el plugin a la forma recomendada en Facebook Developers y no quedarse con el código por defecto que nos facilitan.

Esto consta de 3 partes, primero crear un archivo llamado channel.html y colocarlo en la raíz del sitio con este código:
<script src="http://connect.facebook.net/es_LA/all.js"></script>
Ademas debemos agregar estos atributos a la etiqueta HTML:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/">
Y por ultimo la forma de llamar a connect debe ser asi:
<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId  : 'appid', status : true, cookie : true, xfbml  : true,
      channelUrl  : 'http://www.example.com/channel.html'
    });
  };

  (function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/es_LA/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
  }());
</script>
Si tienes todo esto para integrar algún plugin social solo hay que colocar la etiqueta fb:
<fb:like href="http://www.example.com/" send="false" layout="button_count" width="120" show_faces="true" font="verdana"></fb:like>
Para evitar una penalización en Google agrega esto a tu .htaccess:
RewriteCond %{QUERY_STRING} ^fb_xd_fragment RewriteRule ^(.*)$ http://www.example.com\/$1? [R=301,L]