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.

From the proxy con amor

Creado por Miguel Angel Pedregosa | Guardado en Blog, Personal | Fecha de creación 16-02-2010

0

Llevo unos días queriendo escribir esta pequeña entrada en mi humilde blog, que lo tengo muy olvidado al pobre. Sin embargo, por unos motivos u otros (principalmente trabajo y estudios) lo he ido postergando.

Hace unos meses, allá por el otoño, decidí renovar el móvil aceptando una oferta de MoviStar para que no me descarriara del redil. Lo que ellos no saben es que no me queda otra que permanecer con ellos si quiero tener cobertura en casa de mis padres. Finalmente decidí quedarme con el Samsung Jet en lugar del Nokia 5800.

Puestos en antecedentes, los que me siguen por Twitter seguramente me habrán oído despotricar en muchas ocasiones contra mi terminal.

samsung-jet_5-640x487

Dejando a un lado los numerosos fallos que presenta el móvil y la sensación de producto puesto a la venta “sin pulir” y empeorado por MoviStar, la presa de mi ira se centraba en la conexión a Internet del Jet. La citada conexión no funcionaba como debía, llegando a ser realmente desesperante y acabando con mi paciencia siempre que intentaba cargar una web o leer el correo. Necesitaba diez u doce intentos para conseguir.

Mi indignación,  ya la podéis suponer. Sobretodo, después que te obliguen a contratar la tarifa plana con el teléfono con compromiso de permanencia en la tarifa, so pena de una fuerte penalización.

Tras llamar a MoviStar para dejar constancia de la avería y obtener como respuesta que la red de MoviStar estaba bien y mi conexión a la red también, me tuve que buscar la vida por mi cuenta.

Buscando en foros  y webs no encontré nada, decidí revisar la configuración de conexión del terminal. No encontré nada que no estuviera como me indicaron desde MoviStar pero advertí la presencia de un proxy actuando de intermediario en la conexión.

Probé a eliminar dicho proxy de la configuración y ¡voilá! todo solucionado. Desde entonces no he tenido problemas de conexión, todo funciona como debería haberlo hecho desde un principio.

Sigo sin explicarme como MoviStar o Telefónica se permite el lujo de mantener un servidor proxy sin que funcione correctamente y obligando a que muchos terminales móviles pasen por él para acceder a la red de redes. Supongo que tendrán varios servidores proxy y a mi pues “me tocó el chungo”, que le vamos a hacer.

Para los más despistados os dejo la configuración para acceder a Internet si tienes tarifa plana y el apn telefonica.es asignado. Estos datos no funcionan para el apn movistar.es

Nombre: MoviStar (por ejemplo)

Tipo de portador: UMTS

Nombre de acceso(APN); telefonica.es

Autorización: Normal

ID de usuario: telefonica

Contraseña: telefonica

URL de inicio: lo que quieras que salga cuando abras el navegador

Dirección del proxy: <vacío> o 10.138.255.133:8080

Tiempo de espera: 5000

El resto de ajustes los dejamos en modo automático.

Si accedéis desde MoviStar a Internet comprobad si tenéis algún proxy por medio y revisarlo para saber si está causando problemas.