La forma correcta de poner a nuestro sitio en mantenimiento

Cualquier proyecto web, por pequeño o grande que sea, no puede escapar a dos de los peores momentos que puedan existir: uno es cuando realizamos un mantenimiento con el sitio offline y el otro cuando el sitio esta caído y no tenemos ni pálida idea del motivo.

En estas situaciones lo que deberíamos hacer es poner nuestro sitio en modo mantenimiento, algo que casi nadie hace bien.

modo mantenimiento

¿Qué significa poner nuestro sitio en modo mantenimiento?

  1. Avisarle a nuestros queridos visitantes que momentáneamente nuestro sitio no estará disponible, situación que en breve estaremos de regreso.
  2. Notificar a las arañas de los buscadores que no se preocupen y regresen en otro momento sin afectarnos.

Los errores comunes

Creo que el error más común es no hacer directamente nada, lo que se traduce en visitantes molestos y buscadores caprichosos.

Desde el punto de vista de los visitantes alcanza con un simple aviso. Un pequeño cartel que tan solo diga que estamos realizando cambios en nuestra plataforma y que volveremos a la brevedad.

Desde el punto de vista de los buscadores la cosa es un poco, solo un poco más compleja. La principal forma de administrar el mantenimiento de un sitio web son los códigos de estado HTTP.

En general los estados HTTP que comúnmente vamos a encontrar cuando un sitio entra en mantenimiento son:

Código HTTP 200 OK. Significa que la solicitud se proceso correctamente. Este estado le indica a los buscadores que la pagina se sirvió sin inconvenientes.

El problema de este estado es que el buscadores puede interpretar que nuestro contenido fue modificado, actualizando todas nuestras paginas al contenido nuevo, en este caso el mensaje o aviso que aparece.

Definitivamente no es la mejor forma.

Código HTTP 404 Not Found. Este es probablemente otro grave error, le estamos indicando al buscador que la pagina fue eliminada, que no se encuentra en esta ubicación. En general los buscadores no suelen castigar mucho esta solicitud salvo que nuestro sitio se encuentre en este estado durante un periodo largo de tiempo.

Código HTTP 301 Moved Permanently. El mismo código que utilizamos para decir que nuestro contenido fue movido a otra ubicación. En el caso del mantenimiento de un sitio no es una buena alternativa.

Código HTTP 302 Found. Una opción bastante apetecible, estamos indicando que nuestro contenido se mudo temporalmente a otra ubicación. Este código es interesante desde el punto de vista de una actualización bastante grande y que demorara bastante tiempo. El problema es que no es muy practico porque significa mudar todo nuestro sitio y si es muy grande, tenemos no un problema sino dos.

Existen muchos más códigos de estado HTTP, muchos corresponden a errores específicos, sin embargo estos que liste son los que más frecuentemente podemos encontrar cuando un sitio esta bajo mantenimiento.

En lo personal ninguno de ellos me termina de convencer, salvo uno.

La solución

status HTTP 503

Código HTTP 503 Service Unavailable. Y llegamos al estado que más me gusta, este estado HTTP indica a las arañas de los buscadores que nuestro sitio esta en modo mantenimiento y que es temporal. Es el error indicado para estas situaciones.

Desde PHP podemos imprimir correctamente las cabeceras con este estado HTTP en dos simples lineas:

<?php
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
?>

Pero no se apresuren, todavia podemos mejorar esto agregando una simple linea adicional:

<?php
header('Retry-After: 300');
?>

Este encabezado le indica a la araña del buscador que vuelva a pasar nuevamente hasta dentro del tiempo definido. Otra forma de expresar lo mismo es:

<?php
header('Retry-After: Tue, 21 Dec 2013 12:00:00 GMT');
?>

Es una forma fácil y rápida de indicarle correctamente a los buscadores que nuestro sitio se encuentra en un mantenimiento. La gran ventaja de este método es que no tendremos ningún tipo de problemas de cara al posicionamiento de nuestro sitio.

Categorizado en: