lighttpd 域名和 url 匹配

lighttpd 域名和 url 匹配

我正在尝试配置 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 匹配项也应如此。

相关内容