Hacer un redireccionamiento de enlaces antiguos

Recientemente he actualizado una web pasándola de un viejo y lento joomla, a un potente y velocísimo kumbiaphp. En el cambio me he visto inmerso en 3 graves problemas:

  1. Base de datos muy grande y algo lenta.
  2. Muchísimas visitas.
  3. Artículos con escritura de la URL “diferente”

El problema 1 y 2 se soluciono muy fácilmente usando la cache (de la cual hablaré próximamente en un post especifico dedicado a ello), pero lo verdaderamente sorprendente por su sencillez y simplicidad es como reconstruir las URL antiguas para que funcione con el nuevo diseño de url/rutas.

Al principio imaginé que la forma más sencilla de hacerlo sería mediante reglas en el htaccess. Después pensé en modificar el router del core para que funcionase como yo quería, pero al final resultó muchísimo más sencillo: redireccionamiento desde la vista 404.

Si estamos con el sitio en PRODUCCION, cuando una URL de nuestro sitio no existe, kumbia lanzará la vista 404.phtml para informarnos del error. Es allí, mediante unas simples validaciones donde podremos comprobar la URL que falla, analizarla y ver si tenemos que redirigirla a la URL correcta mediante un redireccionamiento 301 (Página movida permanentemente) o si por el contrario es un error 404 legítimo.

Ventajas:

  1. Fácil manejo desde PHP
  2. Independiente del servidor
  3. Más velocidad (sólo necesita validar si no existe la URL y no en cada Request)

Os dejo el código que me sirvió a mi, tanto cuando las urls correspondían con un patrón fijo, como para otras URL estáticas que tienen su correspondiente nueva URL. También podéis crear una clase para manejar vuestras redirecciones.


<?php
   // views/_shared/errors/404.phtml
   $buscar = filter_var(Router::get('route'), FILTER_SANITIZE_STRING);

   $correspondecias = array(
   "/jprovincia.html" => "provincia",
   "/portada.html" => "portada",
   "/jopinion.html" => "jopinion",
   "/region.html" => "region",
   "/local.html" => "local",
   "/jsociedad.html" => "sociedadcultura",
   "/deportes.html" => "deportes"
   );

   if(isset($correpondencias[$buscar])) {
       Redirect::to("secciones/".$correspondecias[$buscar], 0, 301);
       exit();
   }

   $articulo = (new Articulos)->find_first("urlantigua = '$buscar'");
   if($articulo) {
      Redirect::to("articulos/$articulo->slug", 0, 301);
      exit();
   }
// continuar con la vista 404
?>

Taller de KumbiaPHP en México

Anunciando el próximo Taller de KumbiaPHP en México, este taller se llevará a cabo en el Instituto Tecnológico de San Juan del Río, dentro su 8º congreso Nacional de Tecnologías de la Información. El taller tendrá una duración de 3 x 3 (3 horas x 3 días)

Adelantando la presentación (versión NO final)

Publicidad oficial del Instituto Tecnológico de San Juan del Río

Taller KumbiaPHP Mexico ITSJR
Taller KumbiaPHP Mexico ITSJR

Que necesitas para el taller:

KumbiaPHP en PHP conference Venezuela

php-conference-venezuela

Actualización El 1 y 2 de Agosto 2014 se realizará el PHP Conference Venezuela 2014. La conferencia se realizará en CECIM (Centro de Eventos del Centro Comercial City Market) ubicado en Sabana Grande – Caracas (Cerca de las estaciones del metro de Sabana Grande y Plaza Venezuela), considerado el Centro Tecnológico de la Ciudad, se encuentra en una zona de fácil acceso a medios de transporte, hoteles, y lugares para conocer.

Confirmada la asistencia de KumbiaPHP,  como orador invitado estará Alberto Berroteran, hablando sobre servicios REST y su implementación en KumbiaPHP.

Si eres de Venezuela, aprovecha ahora que las entradas tienen un 50% de descuento. También están disponible entradas para extranjeros con pago via PayPal. Para más información visita: http://www.phpconference.com.ve/