Lighttpd, регулярное выражение в conf, путь, включая соответствие регулярному выражению

Фон: - Lighttpd 1.4.28 - Debian 6.0.7 i686

Несколько разработчиков используют этот веб-сервер, и у каждого из них есть свой виртуальный хост с именем "username.mysite.tld". Эти хосты работают нормально, и я хотел бы сделать общее правило для директивы server.errorfile-prefix.

В lighttpd.conf у меня есть:

$HTTP["host"] =~ "user1.mysite.tld" {
    server.errorfile-prefix = "/home/user1/www/cache_html/error-"
    }
$HTTP["host"] =~ "user2.mysite.tld" {
    server.errorfile-prefix = "/home/user2/www/cache_html/error-"
    }
$HTTP["host"] =~ "user3.mysite.tld" {
    server.errorfile-prefix = "/home/user3/www/cache_html/error-"
    }

Файлы /home/userX/www/cache_html/error-404.html существуют.

Я бы хотел заменить эту копию на:

var.users="user1|user2|user3"
$HTTP["host"] =~ "^(" + users + ")\.mysite\.tld(:[0-9]+)?$" {
    server.errorfile-prefix = "/home/%1/www/cache_html/error-"
    }

Но это не работает: пользовательские 404 страницы не найдены (как ни странно!;-)

Но если я попробую:

var.users="user1|user2|user3"
$HTTP["host"] =~ "^(" + users + ")\.mysite\.tld(:[0-9]+)?$" {
    server.errorfile-prefix = "/home/user1/www/cache_html/error-"
    }

Затем собственная страница 404 пользователя 1 обслуживается всеми пользователями. Похоже, что-то не так с моим регулярным выражением и "%1" в пути. Что мне не хватает?

1 ответ

Решение

Только очень маленький набор опций занимает "строки шаблона"; server.errorfile-prefix этого не делает (server.errorfile-prefix специально разработан, чтобы быть очень простым во внутренней обработке, поэтому он не терпит неудачу снова, поэтому он поддерживает только статические файлы).

вместо этого вы можете попробовать сгенерировать конфигурацию с помощью include_shell.

Другие вопросы по тегам