May 132014
 
Artículo PHP

En ocasiones, puede ser conveniente modificar la estructura del contenido de un sitio web, provocando cambios en las URLs utilizadas para acceder a algunas de las páginas del sitio.

Pero otros sitios web pueden haber enlazado al contenido del nuestro sitio web utilizando las antiguas URLs. También puede haber usuarios que han guardado en Favoritos los antiguos enlaces a nuestras páginas. Por último, los motores de búsqueda como Google o Bing pueden haber indexado nuestro contenido utilizando los antiguos enlaces.

Para evitar que estas referencias se conviertan en enlaces rotos, podemos programar el sitio de manera que al procesar una petición entrante que utiliza una de las urls antiguas, redirija al usuario a la nueva url.

Si el cambio que han sufrido las urls del sitio puede ser expresado fácilmente con una expresión regular, la mejor manera de establecer estas redirecciones es añadir directrices RewriteRule en la configuración del servidor web.

Pero en otras ocasiones, puede ser más conveniente programar la redirección en el interior del script CGI que genera dinámicamente el contenido de la página. En este artículo se explica como implementar las redirecciones en un script PHP.

1. Redirecciones temporales y redirecciones permanentes.

En PHP, una redirección temporal se implementa mediante una llamada a la función “header” con la url de destino como argumento. Por ejemplo:

Con esta sentencia, el servidor web envía la respuesta con un código de estado 302, señalando que se trata de una redirección temporal.

Pero si el cambio de url es definitivo, se debe implementar una redirección permanente, para que los motores de búsqueda como Google entiendan que deben actualizar sus índices, sustituyendo la antigua url por la nueva.

Para ello, debemos añadir el código de respuesta 301 como tercer argumento en la llamada a header(). El segundo argumento lo podemos dejar en blanco, o especificar explícitamente su valor por defecto “true”:

2. Redirecciones 403, 404 y 410

En la reestructuración del contenido, puede ocurrir que una página del sitio sea eliminada. Por defecto, cuando el servidor web encuentra que la página solicitada no existe, devuelve un código de error 404 “Not Found”. En PHP, podemos forzar también la entrega de un código de error 404 con la correspondiente llamada a la función header.

Pero es preferible devolver un código de error 410 “Gone”, que indica a los motores de búsqueda que la página ha sido eliminada intencionadamente, y por lo tanto deben también eliminarla de sus índices. Un navegador no cargará la url indicada en la llamada a header(), pero es habitual especificar en ella la url de la página home:

Por último, puede ocurrir que el contenido exista, pero en determinadas condiciones (p.ej., usuario no validado) se desea impedir el acceso al mismo. En este caso, se utiliza una redirección 403 “Forbidden”, que por lo demás funciona igual que las redirecciones 404 y 410.

Referencias

 Publicado por en 8:06 pm

 Deja un comentario

(requerido)

(requerido)