Drupal, el gestor de contenidos que corre adobo.org, tiene la posibilidad de tener URLs "limpias". En lugar de URLs como:
http://ejemplo.org/?q=node/3
Permite ser configurado para usar URLs del tipo:
http://ejemplo.org/node/3
Esto es muy fácil usando el servidor web Apache y el módulo mod_rewrite, ya que Drupal viene por defecto configurado para ello. Pero aquà uso lighttpd [1] y no es tan simple. ¿Cómo conseguir URLs limpias sin tener que usar el módulo ModRewrite de lighttpd ? No es que no quiera usarlo por aversión o algo parecido, es que simplemente es menos potente que su casi homónimo en Apache y hay que ir especificando casos particulares de reescritura.
La solución la encontré en Running Drupal with Clean URL on Nginx or Lighttpd, aunque le he tenido que realizar un par de cambios. Los pasos a seguir son los siguientes:
server.error-handler-404 = "/index.php";
if (strpos($_SERVER['SERVER_SOFTWARE'], 'lighttpd') !== false) {
$_lighty_url = $base_url.$_SERVER['REQUEST_URI'];
$_lighty_url = @parse_url($_lighty_url);
if ($_lighty_url['path'] != '/index.php' && $_lighty_url['path'] != '/'
&& $_lighty_url['path'] != '/update.php') {
$_SERVER['QUERY_STRING'] = $_lighty_url['query'];
parse_str($_lighty_url['query'], $_lighty_query);
foreach ($_lighty_query as $key => $val)
$_GET[$key] = $_REQUEST[$key] = urldecode($val);
$_GET['q'] = $_REQUEST['q'] = urldecode(substr($_lighty_url['path'], 1));
}
}
Se trata de un pequeño hack o chapucilla que reescribe todas las URLs que llegan a lighttpd salvo 3 (index.php, / y update.php), traduciendo la petición a la manera en que Drupal la espera.
He hecho un par de cambios respecto al código original, ambos recogidos ahora en la página anteriormente citada en forma de comentarios (uno de ellos mÃo). El primero es contemplar el caso especial de update.php, ya que si no nunca podremos actualizar. El segundo lo acabo de aplicar, ha sido el uso de la función urldecode() sin el que, por ejemplo, las etiquetas no se autocompletaban al redactar una entrada. Y ya está, todo funciona igual que en Apache y sin mucha complicación.
Comentarios
Enviar un comentario nuevo