A Captura e a substituição do Regex podem ser usadas com uma diretiva Apache DirectoryMatch?
Pergunta
Alguém sabe se é possível usar a Capture Regex na diretiva DirectoryMatch da Apache? Eu gostaria de fazer algo como o seguinte:
<DirectoryMatch ^/home/www/(.*)>
AuthType Basic
AuthName $1
AuthUserFile /etc/apache2/svn.passwd
Require group $1 admin
</DirectoryMatch>
Mas até agora não tive sucesso.
Especificamente, estou tentando criar uma autenticação HTTP baseada em grupo para diretórios/vhosts individuais em um servidor no Apache 2.0.
Por exemplo, o Site A, apontando para/home/www/a estará disponível para todos os usuários no Grupo Admin e Group A, o Site B em/Home/www/b estará disponível para todos os usuários no Admin e Grupo B, etc, etc. . Gostaria de manter tudo com base no nome do diretório, para que eu possa adicionar facilmente os usuários do HTPasswd aos grupos corretos e automatizar isso o máximo possível, mas outras sugestões para resolver o problema certamente são bem -vindas.
Solução
Você pode resolver o problema de um ângulo completamente diferente: Ative o módulo Perl e pode incluir um pequeno script Perl no seu httpd.conf. Você poderia fazer algo assim:
<Perl>
my @groups = qw/ foo bar baz /;
foreach ( @groups ) {
push @PerlConfig, qq| <Directory /home/www/$_> blah </Directory> |;
}
</Perl>
Dessa forma, você pode até ler seus grupos e outras informações de um banco de dados ou simplesmente globando /home /www ou qualquer outra coisa faz cócegas na sua fantasia.
Outras dicas
O que você está tentando fazer parece muito parecido com Diretórios domésticos por usuário. A maneira como o Apache lida com isso é através das permissões do sistema de arquivos e arquivos .htaccess. Não acredito que haja alguma maneira de usar a captura do Regex nas diretivas fechadas (nome de autenticação, etc.).