我遇到问题,让mod_proxy正确地将流量转发到运行在预定义子文件夹的同一台机器上的其他Web服务器.理想情况下,domain.com/docs应转发至127.0.0.1:3000,所有其他流量应保留在domain.com上.这里的重写规则适用于在domain.com上运行的wordpress安装:
$HTTP["host"] =~ "(^|\.)domain\.com" {
$HTTP["url"] =~ "^/docs" {
proxy.server = ( "" => (( "host" => "127.0.0.1", "port" => 3000 )))
}
$HTTP["url"] !~ "^/docs/(.*)" {
url.rewrite = (
"^/(.*)\.(.+)$" => "$0",
"^/wp/(.*)$" => "$0",
"^/(.+)/?$" => "/index.php/$1"
)
server.document-root = "/mnt/webroot/html"
}
}
我一直在反对这一点,所以任何建议都是受欢迎的.
最佳答案 我最终想出了导致这个问题不能像我预期的那样工作的问题.
lighttpd的重写mod的工作方式是在评估它的$HTTP [“url”]条件之前评估所有url.rewrite命令,这意味着放置在$HTTP [“url”]条件中的任何url.rewrite命令都没有效果.
我无法找到一个很好的解决方案,我正在寻找具有此限制的实现,而是最终将一些重写下游推送到另一个服务器(在这种情况下为节点),我正在代理流量.
这一行在lighttpd的ModRewrite文档中被宽泛地引用了这一行:
NOTE: url rewriting does not work within a $HTTP["url"] conditional.