Flight PHP 微框架的 Lighttpd 重写规则

Flight PHP 微框架的 Lighttpd 重写规则

我正在使用 Flight PHP 微框架,它包含自己的路由器,并且需要服务器将请求重写到 index.php 文件。

它具有针对 Apache 和 Nginx 的重写规则,但我运气不好,我在生产中使用 lighttpd,而且我并不真的想改变它。

所以,我不想成为那种只说“给我解决方案”的人。但是说真的,谁能帮帮我,我不知道如何重写 Lighttpd 请求。

Apache 配置如下:

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

Nginx 配置如下:

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

我自己的 Lighttpd 配置目前如下所示:

$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" )
}

但它不起作用。我怎样才能像上面那样重写子域名,使 Flight PHP 正常工作?我喜欢这个框架,所以如果必须更改它,我会很伤心。

多谢你们! :)

答案1

  • 您的重写规则没有执行“QSA”——它删除了查询字符串
  • 您的重写也触发了现有文件(不匹配!-f!-d

以下应该保留查询字符串,并且仅当请求的路径不是正常的真实文件时才触发(但是目录的触发器,与 apache 不匹配!-d- 尽管我认为这!-d可能是 apache 配置中的一个错误)。

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

您还可以使用锚定正则表达式:

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

相关内容