Indexación en Ajax

Para alguien que me lo pregunto hace poco, una aclaración rápida sobre los términos indexación y Ajax.

Ajax es una solución excelente para añadir dinamismo y usabilidad en nuestras aplicaciones Web, pero tiene un gran problema: La indexación.

Si queremos conseguir muchas páginas vistas, lo primero que tenemos que hacer es tener un buen número de páginas indexadas por los buscadores (aka google). Y para que ésto suceda tenemos que poder asociar una URL a un contenido diferente.

Por ejemplo, si en un blog tuvieramos una única dirección index.php, que mediante Ajax, manipulando el DOM de la página va cambiando el contenido (cosa que he visto), google solamente se va a enterar de que tenermos una portada con unos contenidos estáticos y poco más. Sin embargo, si asociamos una URL (aunque sean parámetros con GET) a un contenido, tendremos una página distinta.

index.php?item=331 será distinta página que index.php?item=41

Esto es lo habitual en CMSs, o aplicaciones en general. Sin embargo con ajax, tendríamos un index.php, y todas las peticiones irían con el XMLHttpRequest
De esta forma, si desarrollamos una aplicación en Ajax que requiera de indexación, siempre tendremos que ofrecer el mismo contenido mediante el formato habitual de la petición GET con parámetros.

Otro factor a tener en cuenta es que los parámetros no son muy buenos amigos de los buscadores, entonces tenemos que encontrar una forma de cambiar la ristra de parámetros por una dirección estática y acabada en .htm ¿Cómo conseguimos esto?

Opción 1:

Indexación con mod_rewrite

: Mod rewrite es un modulo del servidor web apache, que permite tener una dirección “pseudoestática” que se convierte en una dirección con parámetros.
id est: miweb.com/ajax-y-la-indexacion-123.htm será convertida en miweb.com/index.php?post=123
Un pequeño manual para trabajar con mod rewrite.
Opción 2:

Indexación con páginas de error Error404.

El mod rewrite está bastante bien, y soporta incluso expresiones regulares, pero en ciertas ocasiones se puede quedar un poco corto, sobre todo si trabajamos con algún servidor donde no tenemos acceso a todas las funcionalidades. ¿Qué podemos hacer entonces?

El error404 es la página que devuelve un servidor cuando no encuentra el documento solicitado, y esta página puede ser personalizable. Es decir, que podríamos crear una página e404.php que gestiona los parámetros y redirige a donde toca.

id est: Solicitamos miweb.com/ajax-y-la-indexacion-123.htm. Esa página no existe, ergo el servidor devuelve un error 404. Busca en su configuración dónde está la página de error a mostrar, y la abre. Abre en el servidor una página php (e404.php) que interpreta. Entonces aquí, podemos desde hacer consultas a la BD, hasta “parsear” la URL que no existe, y sacar el número (123 en este caso) y convertirlo si hacer las búsquedas pertinentes con esos parámetros.

Esta segunda opción es algo más complicada, pero admite una lógica más extensa y un mayor control si nuestra aplicación es grande.

Nota: Se que este post es bastante básico y hay mucha información de esto por ahí, pero normalmente prefiero escribir un post aquí, que enviar un mail explicandolo.


  1. WhisKiTo dijo...

    Muy bueno, si señor. Realmente funcional.

    Por otro lado, mira a ver algunos hipervínculos que los tienes mal copiados :P

  2. sergiogh dijo...

    Ya te digo, te ahorra muuucho tiempo! Además, conozco a uno de los que está detrás del tema, y tendrá futuro…

    Y lo de los enlaces, gracias por el aviso, eso pasa por ir deprisa y a lo loco!

  3. VictorJCh dijo...

    Realmente me ha parecido muy interesante, yo opto por siempre pasar parámetros por la url para generar el contenido. El ajax le empleo para cambios específicos, no veo lógico generar todo el contenido de la página con ajax, ya que ajax para mi punto de vista es para crear un dinamismo con zonas concretas o con datos concretos de la página web.

    Buen artículo, lo de la personalización error 404 puede ser de gran ayuda para determinadas circunstancias concretas.

    Saludos.

  4. Sergio dijo...

    Hola Victor.

    Estoy de acuerdo contigo en que en general es un error usar ajax para cambiar el contenido de la página. Lo suyo es emplearlo en acción-respuesta y no en generación de contenido. Id est: Confirmación de formularios, envío de comentarios, etc… Cosas que merezca la pena que no rompan el hilo de navegación.

    Sin embargo, en ocasiones es necesario (precisamente en un proyecto que estoy haciendo ahora), y nos encontramos con el problema de poder acceder a un ítem determinado. De esta forma existen dos métodos para llegar a la dirección deseada: Con las peticiones Ajax, o con la URL concreta.

    Me alegro que te haya gustado.
    Un saludo!

  5. Carlos Aguilar dijo...

    Hola Sergio, muy buen artículo, yo estaba viendo si rediseñaba mi web que funcionaba completamente en ajax mas que todo por lo que mencionas de que quiero tener mas paginas indexadas y pues siendo bastante sinceros la carga de contenido con AJAX es mucho más rapida que de la manera tradicional, en el aspecto del posicionamiento es un verdadero problema hacer esto, ya que google no puede ver el contenido generado por el javascript.

  6. Sergio dijo...

    Buenas Carlos.
    Estamos ante la disyuntiva del milenio, el menos, desde que se “descubrió” ajax. Cargo todo dinámicamente, o optimizo para indexación.

    En mi caso, como digo, he optado por una mezcla de ambas cosas. Por un lado, la aplicación funciona con cargas y descargas ajax síncronas, pero también, mediante enlaces internos, permito que google llegue directamente a páginas que se gestionan con mod_rewrite.

  7. fernando veiga segade dijo...

    No conozco ningún manual de GYM Sitemaps. Lo único que hay, que yo sepa, es el que está en la página de soporte.

    Por cierto, en estos foros, no tengo instalado GYM y Google indexa las páginas rápidamente. Puedes verlo escribiendo, por ejemplo, el título de este tema.

    Saludos.

Discútemelo

consultoria web

V2.0