Назад | Перейти на главную страницу

lighttpd домены и соответствие URL

Я пытаюсь настроить lighttpd так, чтобы:

Таким образом, в основном, domain1 и domain2 должны использовать одну и ту же конфигурацию, за исключением случаев, когда доступ к domain1 осуществляется через URL-адрес, который начинается с / admin.

Я пробовал пока несколько вариантов, в том числе этот:

$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.

Что мне не хватает?

Видеть http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModRewrite:

ПРИМЕЧАНИЕ: переопределение URL-адресов не работает в условном $ HTTP ["url"].

Кроме того, при перезаписи всегда должен использоваться абсолютный путь, поэтому вы должны ставить перед совпадениями префикс / admin, а также цели и совпадения fastcgi.server.