Archivo de Julio de 2008

URL Amigables (II)(php)

Martes, 15 de Julio de 2008

Bueno con más de dos meses de retardo, voy a seguir con esta serie de artículos que tienen que ver con las URLs Amigables (en inglés SEO URLs). La razón ha sido que he estado trabajando a destajo para un proyecto en el que estoy trabajando, en el que estoy aprendiendo mucho y ya iré publicando las cosas que he ido aprendiendo.

Bueno vamos a lio con las URL Amigables.

Lo primero he de decir que dependiendo de si trabajamos en IIS o en Apache, en los ejemplos iré mostrandolo.

En primer lugar decir que las pruebas las he desarrollado sobre Windows Vista Home Premium con el Servidor Web WampServer 2.0, aunque luego lo he probado en un Windows 2003 Server con IIS 6 y en Debian Linux con Apache 2.0 (en mi hosting de Powweb).

Si estamos en Apache lo primero que tenemos que hacer es crear un fichero .htaccess para poder redirigir las urls amigables a las páginas que corresponden, para ello recordamos que el artículo I se dice que vamos a utilizar esta pequeña chapuza.

En el fichero .htaccess escribiremos el siguiente texto.

ErrorDocument 404 /urlAmigables/controllers/controller.php

Esta línea que se introduce en el .htaccess significa que si genera el error 404 en el servidor (Página no encontrada) que se vaya a la url /urlAmigables/controllers/controller.php, Es en este fichero donde se va a hacer el procesado de la URL para luego ejecutar dentro las acciones pertinentes.

El llamar a esta página controller.php tiene que ver puesto que esta idea se me ocurrió aprendiendo a utilizar las Frameworks de PHP, que para mi gusto están bien para hacer desarrollos pequeños, en desarrollos más grandes es mejor utilizar, desde mi punto de vista, herramientas propias.

En el fichero controller.php debemos introducir:

PHP:
  1. <?php
  2.     $URLAmigable = urldecode($_SERVER['REQUEST_URI']);
  3.  
  4.     //  Como en el apache tengo varios sitios en el sito web localhost, tengo que quitar de la url
  5.     // el sitio web sobre el que estoy trabajando.
  6.     //$URLAmigable = str_replace('/urlAmigables/', '', $URLAmigable);
  7.     $URLAmigable = substr($URLAmigable, 1);
  8.  
  9.     //  Procesamos la URL Amigable para poder procesar el fichero.
  10.     $Params = split('/', $URLAmigable);
  11.     $controller = '';
  12.     if (Count($Params)> 0)
  13.     {
  14.         $controller = $Params[0];
  15.     }
  16.     else if($URLAmigable != '')
  17.     {
  18.         $controller = $URLAmigable;
  19.     }
  20.  
  21.     $strParams = str_replace($controller . '/', '', $URLAmigable);
  22.  
  23.     switch(strtolower($controller))
  24.     {
  25.         case "modulo" :
  26.         case "módulo" :
  27.             include('modulo.php');
  28.             break;
  29.         default:
  30.             header('', true, 404);
  31.             include('error404.php');
  32.             break;
  33.     }
  34. ?>

En el IIS en vez de poner el fichero .htaccess, hay que cambiar la url del error 404, si tienes acceso al IIS de tu servidor, deberás acceder a él y luego en el sitio web cambiar las direcciones de error del 404 (por defecto vienen 3) y ponerlas a este fichero. Sino tienes acceso al IIS, seguro que tu servicio de hosting tiene en algún lugar algún sitio donde poder cambiar dicho fichero.

Pues ya está solo hace falta hacer el fichero de error para cuando se introducen direcciones que no son válidas (error404.php) y los ficheros de nuestras herramientas, en el ejemplo es modulo.php, que responde a las url amigables modulo1 y modulo2.

Puedes ver un ejemplo de esta forma de trabajar en http://urlamigables.petralinkfactory.com

Y te puedes descargar el ejemplo desde: http://urlamigables.petralinkfactory.com/urlamigables.zip