
私は 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 と一致しないディレクトリに対してはトリガーされますが、これはおそらく Apache 構成のバグである!-d
と私は主張します)。!-d
url.rewrite-if-not-file = ( "(\?(.*))?" => "/index.php$1" )
アンカー正規表現を使用することもできます。
url.rewrite-if-not-file = ( "^.*(\?(.*))?$" => "/index.php$1" )