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.