2

ファイルが見つからない場合に特定の cakephp コントローラ アクションが実行されるように、lighttpd の書き換えルールを設定しようとしています。controller-action はデータ (png ファイル) を生成し、将来の使用のために保存してから、クライアントに提供します。次に誰かがファイルにアクセスしようとすると、php を実行せずに lighttpd によって直接提供されます。つまり、png ファイルはキャッシュされるため、再作成する必要はありません。

私が知る限り、 rewrite-once が一致する場合、 url.rewrite-if-not-file は無視されます。したがって、以下はキャッシュされたファイルを提供できますが、キャッシュされていないファイルは提供できません。

url.rewrite-if-not-file = (
  "^/scan/(.+)\.png" => "/mycontroller/scan/$1"
)

url.rewrite-once = (
  "^/(css|files|img|js)/(.*)" => "/$1/$2",
  "^/favicon.ico" => "/favicon.ico",    
  "^/scan/(.+\.png)" => "/scan/$1",
  "^([^\?]*)(\?(.+))?$" => "/index.php?url=$1&$3",
)

今考えられる唯一の解決策は、3 番目のルールを削除して変更^([^\?]*)(\?(.+))?$し、 で始まる URL を無視すること\scan\です。

他の提案はありますか?

4

1 に答える 1

0

私はコントローラーでこのようなことをします:

if (file_exists($file_name)) {
    $this->redirect($file_name);
} else {
    $this->redirect(array('action' => 'some_action', 'controller' => 'some_controller'));
}
于 2013-11-19T16:33:04.307 に答える