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

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 пользователя user1. Похоже, что с моим регулярным выражением и "% 1" в пути что-то не так. Что мне не хватает?

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

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