Flight PHP 微框架的 Lighttpd 重寫規則

Flight PHP 微框架的 Lighttpd 重寫規則

我正在使用 Flight PHP 微框架,它包含自己的路由器,並且需要伺服器來重寫 index.php 檔案的請求。

它具有適用於 Apache 和 Nginx 的重寫規則,但不幸的是,我在生產中使用 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" )

相關內容