我正在尝试配置 lighttpd 以便:
- www.domain1.org/admin 使用 config1
- www.domain1.org 上的任何其他 URL 均使用 config2
- www.domain2.org 上的任何 url 都使用 config2
因此,基本上,域 1 和域 2 应该使用相同的配置,除非通过以 /admin 开头的 URL 访问域 1
到目前为止,我尝试了许多变化,包括这个:
$HTTP["host"] =~ "domain1.org" {
$HTTP["url"] =~ "^/admin" {
// config1
alias.url = ("/media/admin" => "/usr/share...",
"/static" => "/var/www/...")
url.rewrite-once = (
"^(/media/admin.*)$" => "$1",
"^(/static.*)$" => "$1",
"^/favicon\.ico$" => "/media/favicon.ico",
"^(/.*)$" => "/application.fcgi$1",
)
server.document-root="/var/www/application"
fastcgi.debug = 1
fastcgi.server = (
"/application.fcgi" => (
"main" => (
"socket" => "/var/www/application/application.sock",
"check-local" => "disable",
)
),
)
} else $HTTP["url"] !~ "^/admin" {
// config2
}
$HTTP["host"] !~ "domain1.org" {
// config2
}
但无论如何,访问 domain1.org/admin 都会导致 404。
我是否遗漏了什么?
答案1
看http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModRewrite:
注意:url 重写在 $HTTP["url"] 条件内不起作用。
而且重写必须始终使用绝对路径,因此您应该在匹配项中添加前缀 /admin,并且目标和 fastcgi.server 匹配项也应如此。