Есть ли способ динамически определить, какой файл htpasswd использовать во время выполнения? Например, следующее (что не работает, просто пример) внутри контекста VirtualHost:
RewriteEngine on
RewriteMap htpasswdfiles txt:/srv/htpasswdfiles/htpasswdfiles.map
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule .* - [E=PASSWD_FILE:${htpasswdfiles:%1},L]
<Directory /some/path>
AuthType Basic
AuthName "Restricted Access"
AuthUserFile $PASSWD_FILE
Require valid-user
</Directory>
Я знаю, что приведенный выше пример не работает, но я не уверен, есть ли другой способ использовать такие переменные среды, как этот ... Если нет, я не знаю, есть ли какой-либо другой метод для выбора файла htpasswd динамически во время выполнения. htpasswdfiles.map - это карта, содержащая домены слева и соответствующие пути к файлам htpasswd справа.
Просто укажите конфигурацию Apache на плоский файл и пусть скрипт вне Apache управляет содержимым.
Используйте LDAP для аутентификации вместо поиска записей в плоском файле.
Я использовал для настройки динамической базовой аутентификации, используя mod_perl
без htpasswd
файлов, в конфигурациях Apache был объявлен обработчик, а Perl позаботился обо всем остальном. Но, наверное, это не то, что вам нужно (mod_perl
в наши дни обычно не используется).
Поскольку перезапись и аутентификация не имеют абсолютно ничего общего, это не работает.
ПОЧЕМУ вам нужно «динамически выбирать файл htpasswd»?