我正在尝试为 lighttpd 配置重写规则,以便在找不到文件时执行特定的 cakephp 控制器操作。控制器动作将生成数据(png 文件),保存以备将来使用,然后将其提供给客户端。下次有人尝试访问该文件时,它将由 lighttpd 直接提供服务,而不执行任何 php.ini 文件。换句话说,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",
)
我现在能想到的唯一解决方案是删除第三条规则并进行修改^([^\?]*)(\?(.+))?$
,使其忽略以\scan\
.
还有其他建议吗?