May 132014
 
Artículo Apache

En ocasiones, el webmaster de un sitio web puede determinar que es conveniente modificar la manera en que el contenido del sitio está estructurado. Como consecuencia, la URL de acceso a algunas de las páginas del sitio puede verse afectada. Pero puede haber enlaces en otras páginas que utilizan la antigua URL, ya sea enlaces externos desde otros sitios web, o bien enlaces internos desde otras páginas del mismo sitio. Por otra parte, los motores de búsqueda como Google pueden haber indexado el contenido de la página utilizando también la antigua URL.

Si se modificara la URL sin tener esto en cuenta, todos estos enlaces se convertirían en enlaces rotos, y el sitio web perdería el tráfico que pudieran generar, y su posicionamiento en las páginas de resultados de los motores de búsqueda también se vería afectado.

Para evitar este efecto indeseado, en la configuración del servidor web Apache se pueden configurar redireccionamientos desde la antigua URL a la nueva, como se explica en este artículo.

1. Redirecciones 301 y 302

Si la URL de la página ha sido modificada de manera definitiva, entonces conviene establecer una redirección permanente que corresponde a un código HTTP 301.

Si por el contrario, la URL ha sido modificada temporalmente, pero está previsto que el contenido vuelva a ser accesible a través de la url original, entonces deberemos configurar una redirección temporal, con código HTTP 302.

Para implementar estas redirecciones, insertaremos una directriz “RewriteRule” en el fichero de configuración del servidor web, o bien en el fichero .htaccess de configuración a nivel de directorio. La sintaxis en ambos casos es similar.

En el siguiente ejemplo, vemos cómo configurar la redirección permanente de todas las URLs del dominio www.ejemplo.com, a las correspondientes urls del dominio www.ejemplo.net

Para configurar una redirección temporal, bastaría con sustituir “R=301” por “R=302”

La condición expresada en la directriz RewriteCond que precede a la redirección limita la aplicación de ésta última a aquellas URLs cuyo dominio original es www.ejemplo.com. Sólo será necesario utilizar esta condición si el servidor está configurado para servir varios hosts virtuales.

Por su parte, el flag “L” impide que continúe realizándose la evaluación de las reglas de reescritura posteriores a la redirección.

2. Redirecciones 404 y 410

En otras ocasiones, durante la reestructuración del contenido de un sitio web, el webmaster puede determinar que algunas páginas simplemente desaparezcan, sin ser sustituidas por otras.

El comportamiento por defecto del servidor web en estos casos es enviar al navegador una respuesta con código HTTP “404 Not Found”, para indicar que la página no existe. Pero en estos casos es preferible configurar una respuesta con código HTTP “410 Gone” para hacer saber a los motores de búsqueda que la página ha sido eliminada intencionadamente.

Por ejemplo, para indicar que todas la páginas bajo el directorio “/2012/imagenes” han sido eliminadas, utilizamos la directriz:

El flag “G” (“Gone”)  indica al servidor web que debe devolver un código 410.

El flag “NC” (No Case) que vemos en el ejemplo es opcional, e indica que la evaluación de la expresión regular de la izquierda debe hacerse sin diferenciar mayúsculas de minúsculas. Asi, también se devolvería un código 410 a una url de la forma “/2010/IMAGENES/*”

3. Redirección 403

Por último, en algunos casos nos puede interesar señalar que la página existe, pero que no se permite el acceso a la misma. Por ejemplo, si queremos evitar el acceso a páginas de administración del sitio a usuarios no registrados. En este caso, el código HTTP a devolver es “403 Forbidden”.

La sintaxis es similar a la utilizada para la redirección 404, pero utilizando el flag “F”. Por ejemplo, para evitar el acceso a cualquier fichero con extensión “.exe”:

Referencias

 Publicado por en 8:49 pm

 Deja un comentario

(requerido)

(requerido)