URLs amigables en Prestahop bajo lighttpd
Creado por Miguel Angel Pedregosa | Guardado en Comercio electrónico, General, Personal | Fecha de creación 18-02-2010
0
Para un proyecto de comercio electrónico que estamos desarrollando se ha optado por una solución basada en el gran software libre Prestashop.
A la hora de su implantación opté por lighttpd con php vía fastcgi en lugar de usar el siempre socorrido Apache2, principalmente por temas de rendimiento.
Prestashop funciona perfectamente bajo lighttpd, el único problema encontrado estuvo en las url amigables. Prestashop genera un fichero .htaccess con las reglas que necesita para funcionar bajo Apache.
Lighttpd soporta la redirección de urls de un modo muy similar a como lo hace Apache, aunque con pequeñas diferencias en su configuración y en la definición de las reglas para la rescritura de urls. Vamos a ver como activar el soporte de esta característica, así como las reglas necesarias para que Prestashop funcione correctamente.
Una vez instalado y funcionando lighttpd en nuestra máquina, editamos el archivo /etc/lighttpd/lighttpd.conf con nuestro editor de texto favorito.
Eliminamos la almohadilla de la linea:
# "mod_rewrite", |
En el mismo fichero, dónde tengamos la definición del host virtual, añadimos las siguientes líneas para que las urls de Prestashop funcionen correctamente.
url.rewrite-once = ( "^/([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$" => "/img/p/$1-$2$3.jpg", "^/([0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$" => "/img/c/$1$2.jpg", "^/lang-([a-z]{2})/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(\?(.*))?" => "/product.php?id_product=$3&isolang=$1$6" , "^/lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)\.html(\?(.*))?" =>"/product.php?id_product=$2&isolang=$1&$4", "^/lang-([a-z]{2})/content/([0-9]+)\-([a-zA-Z0-9-]*)(\?(.*))?" =>"/cms.php?id_cms=$2&isolang=$1&$4", "^/lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)(\?(.*))?" =>"/category.php?id_category=$2&isolang=$1&$5" , "^/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(\?(.*))?" => "/product.php?id_product=$2&$5" , "^/([0-9]+)\-([a-zA-Z0-9-]*)\.html(\?(.*))?" =>"/product.php?id_product=$1&$4", "^/([0-9]+)\-([a-zA-Z0-9-]*)(\?(.*))?" =>"/category.php?id_category=$1&$4" , "^/content/([0-9]+)\-([a-zA-Z0-9-]*)(\?(.*))?" =>"/cms.php?id_cms=$1&$4" , "^/([0-9]+)__([a-zA-Z0-9-]*)(\?(.*))?" =>"/supplier.php?id_supplier=$1&$4" , "^/([0-9]+)_([a-zA-Z0-9-]*)(\?(.*))?" =>"/manufacturer.php?id_manufacturer=$1&$4", "^/lang-([a-z]{2})/(\?(.*))?" => "/index.php?isolang=$1&$2" ) |
Listo, guardamos el archivo y reiniciamos lighttpd para aplicar los cambios. Si has cometido algún error de sintaxis el sistema te avisará y no arrancará hasta que no lo hayamos corregido. He subido el código a Pastebin por si no se muestra correctamente en el blog.
Recordar también que debemos activar el soporte para las urls amigables en el backend de Prestashop, en las opciones de nuestro sitio web.


