30 de junio de 2012

Buscando soluciones a un Sitemap demasiado grande con Xmap

Problema

En otra ocasión ya estuvimos hablando de Xmap, una extensión para la creación de Sitemaps de tu sitio Joomla! que puede facilitar la indexación en los buscadores.

Trabajando con Joomla! 1.5.25 en un servidor con PHP 5.3, un compañero me avisa de que en un proyecto con gran cantidad de artículos (sobre 6.000), Xmap está fallando, tanto en la creación del Sitemap en HTML como en XML.

En el sitemap en HTML el error que aparece al final de la página -que no logra cargarse- por completo es:
Fatal error: Maximum execution time of 10 seconds exceeded in /misitio.com/web/libraries/joomla/environment/uri.php on line 722
En el sitemap en XML aparecía:
Error de lectura XML: no se encuentra elemento
Ubicación: http://www.misitio.com/index.php?option=com_xmap&sitemap=x&view=xml
Número de línea 45454, columna 1
¿Qué hacer? Este proyecto se había quedado sin mapa del sitio y sin tener un XML válido para poder introducirse desde Google Webmaster.

Solución

* En primer lugar, el error en ambos casos, parece ser debido a una sobrecarga del sistema, que da la impresión de no poder crear Sitemaps tan grandes, ya que siempre el número de línea donde se daba el error, variaba, por lo que no se trataba de un problema puntual en un archivo.

Vemos en las opciones del actual Sitemap en la administración de Xmap que nos aparecía en la parte superior un error de PHP:
Deprecated: Function eregi() is deprecated in /misitio.com/web/administrator/components/com_xmap/admin.xmap.html.php on line 298
Como ya vimos en un artículo anterior, la función eregi en el nuevo entorno de PHP 5.3 está obsoleta. Para corregir este error, nos dirigimos hacia el archivo PHP que nos marca, y en la línea 298 sustituimos la función que aparece para controlar las imágenes por la expresión renovada:
if( preg_match('#^http:\/\/(.*)\.(gif|png|jpg)$#i'
 Una vez realizada esta acción, el error en PHP se había subsanado, pero los Sitemaps seguían sin funcionar.

* En segundo lugar, intentamos actualizar la extensión a su última versión. Desinstalamos la 1.2.9. e instalamos la 1.2.14, sin embargo, el error continuaba.

* Otra opción fue probar alguna extensión distinta, por si la dificultad estaba en la compatibilidad del sitio con el componente Xmap. Probamos el JCrowler, MySite y fwSitemap que aunque no dudamos de su valía en otros contextos, en nuestro caso, nada conseguimos.

* Finalmente dimos en la tecla con dos opciones válidas y que funcionaron utilizando el propio Xmap:

1. Opción de realizar varios Sitemaps, no solo uno. De esta forma se puede crear uno para cada sección o por cada menú y luego introducirlos todos en Google Webmaster.

2. Un solo Sitemap, configurado con las secciones del menú, pero no con las categorías. Es decir, en "Opciones" de nuestro Sitemap, en "Preferencias --> Excluir IDs del menú" excluímos del mismo todas las categorías que tengan las secciones del contenido que deseamos incluir, de esta forma conseguimos que se simplifique la función de Xmap y nuestro Sitemap con más de 6.000 ítems vuelva a funcionar, tanto en su versión HTML como XML. Lo único negativo es que mostrará el contenido por secciones, sin diferenciar las categorías, algo que sin duda es un mal menor.

No hay comentarios:

Publicar un comentario