Regla de reescritura de Lighttpd para el microframework PHP de Flight

Regla de reescritura de Lighttpd para el microframework PHP de Flight

Estoy usando el microframework PHP Flight, incluye su propio enrutador y necesita que el servidor reescriba las solicitudes en el archivo index.php.

Incluye reglas de reescritura tanto para Apache como para Nginx, pero, por desgracia, estoy usando lighttpd en producción y no estoy realmente interesado en cambiar eso.

Entonces, odio ser ese tipo que simplemente dice: Dame la solución... Pero en serio, que alguien me ayude, no tengo idea de cómo reescribir las solicitudes de Lighttpd.

La configuración de Apache es así:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

Y la configuración de Nginx así:

server {
    location / {
        try_files $uri $uri/ /index.php;
    }
}

Mi propia configuración de Lighttpd actualmente se ve así:

$HTTP["host"]  == "zyx.abc.dk"{
        server.document-root = "/var/www/app1/zyx"
        accesslog.filename         = "/var/log/lighttpd/zyx-log.log"
        url.rewrite-once = ( "(.*)" => "/index.php" )
}

Pero no funciona. ¿Cómo puedo hacer que el subdominio se reescriba como se muestra arriba para que Flight PHP funcione? Me gusta el marco, así que me entristecería mucho tener que cambiarlo.

¡Gracias chicos! :)

Respuesta1

  • su regla de reescritura no hizo "QSA": eliminó la cadena de consulta
  • su reescritura también se activó para archivos existentes (no coinciden !-fy !-d)

Lo siguiente debería mantener la cadena de consulta y solo activarse si la ruta solicitada no es un archivo real normal (sino activadores de directorios, que no coinciden con Apache !-d, aunque yo diría que !-dprobablemente sea un error en la configuración de Apache).

url.rewrite-if-not-file = ( "(\?(.*))?" => "/index.php$1" )

También puedes usar una expresión regular anclada:

url.rewrite-if-not-file = ( "^.*(\?(.*))?$" => "/index.php$1" )

información relacionada