Sesiones

Sesiones y motores de búsqueda

El uso de las sesiones es necesario en varios casos y en particular para:

  • Rastrear el camino del visitante en el sitio.
  • Memorizar ciertas informaciones (como el contenido de una cesta).

Las informaciones de la sesión se almacenan en un archivo en el servidor. Este archivo es único y se genera un identificador para cada usuario. Este identificador es una cadena de texto de al menos 32 caracteres. Se utiliza para establecer la correspondencia entre el usuario y el archivo que contiene la información de la sesión.

El identificador puede almacenarse en una cookie (en el ordenador del usuario). Esta es la situación más común. Sin embargo, si el usuario no acepta las cookies, es posible transmitir este identificador a través de la URL. Probablemente han visto URLs que contienen una cadena que se parece a ?PHPSESSID=a9e8dc705da1560e9b6b6d4c1a65ae3245.

Problemas con las sesiones en SEO

Hay que saber que los motores de búsqueda no aceptan cookies. Resulta que muchos sitios evitan este problema usando URLs para transmitir el ID de la sesión, y ahí es donde empiezan los problemas.

Los robots indexan este tipo de URL, y podemos comprobarlo fácilmente. Para ello, simplemente introduzcan la siguiente consulta en el motor de su elección.

En promedio (dependiendo de la configuración del servidor), los archivos de sesión se mantienen durante treinta minutos. De este modo, cuando el robot regrese, se activará una nueva sesión con una nueva URL para indexar. Tengan en cuenta que el contenido será idéntico a la página visitada anteriormente por el robot. Los robots podrán entonces indexar la misma página cientos de veces.

Como pueden imaginar, después de un tiempo, los motores de búsqueda detectan 2 problemas principales:

  • URL que caduca rápidamente.
  • Duplicación de contenido.
  • Número infinito de páginas a indexar.

¿Una solución para hacer desaparecer las sesiones?

Decir que las sesiones no deben usarse no es una solución concebible. De hecho, las sesiones pueden ser muy prácticas para los webmasters como vimos al principio de este artículo. Entonces, ¿cómo se eliminan los ID de sesión en las URL? Hay varias soluciones posibles:

  • Crear sesiones solo cuando es útil. Algunos sitios se conectan en la primera página visitada, pero no la usan realmente hasta después de que el usuario se conecte.
  • Dar prioridad al identificador a través de las cookies y no a través de la URL.
  • Privarse de los usuarios de Internet que no aceptan cookies y prohibir el paso de ID en los URL.
  • Detectar de robots e iniciar sesiones sólo con internautas.

Prohibir los identificadores de sesión en la URL con htaccess

SetEnv SESSION_USE_TRANS_SID 0

Prohibir los identificadores de sesión en la URL con el php.ini

session.use_trans_sid = 0

Para los servidores de IIS, ya he visto a un administrador de la red arreglar el problema a través de una simple opción en su panel de administración.

Prohibir el paso de identificadores de sesión en el URL

/* Desactivar el reconocimiento del identificador de la sesión en el URL */
ini_set('session.use_trans_sid', "0");
/* Permiso para usar cookies */
ini_set('session.use_cookies', "1");
/* Permiso para usar solo cookies */
ini_set('session.use_only_cookies', "1"); */
/* Prohibición de añadir el identificador de sesión en el código html generado */
ini_set("url_rewriter.tags","");
/* Todo está bajo control, ya empezamos la sesión */ session_start();

Sería posible hacerlo más corto, pero aquí he entregado el código en una versión paranoica 🙂

Detectar robots en php

Existen métodos para detectar robots. Por ejemplo, es posible comprobar el user agent, el host y la IP de cada visitante y luego iniciar o detener una sesión.

Aquí está una propuesta para controlar el agente usuario solamente:

<?php
function checkUaRobot(){
  $robot = false;
  $_UA = array("GoogleBot", "Slurp","MsnBot");
  // Completar la lista con todas las UA que quieren

  foreach($_UA as $ua) {
    // Comparamos el user agent del visitante con nuestra lista
    if(eregi($ua,$_SERVER["HTTP_USER_AGENT"])) return true;
  }

  // La UA no está en nuestra lista, se trata de un visitante humano
  return false;
 }
?>

// Se llamá a la función
if (!checkUaRobot()) { session_start(); }
?>

Una última "solución" es dejar que Google se encargue él mismo de esta función. Limpiará su propio desorden un día u otro borrando las páginas duplicadas... pero esto no es recomendable.

 

Próximo Formularios

Anterior : Tecnica

Oseox Monitoring