正则表达式捕获和替换可以与Apache DirectoryMatch指令一起使用吗?

时间:2008-09-17 23:09:48

标签: regex apache

有没有人知道在Apache的DirectoryMatch指令中是否可以使用正则表达式捕获?我想做类似以下的事情:

<DirectoryMatch ^/home/www/(.*)>
    AuthType Basic
    AuthName $1
    AuthUserFile /etc/apache2/svn.passwd
    Require group $1 admin
</DirectoryMatch>

但到目前为止我没有成功。

具体来说,我正在尝试为Apache 2.0中的服务器上的各个目录/ vhost创建基于组的HTTP Auth。

例如,指向/ home / www / a的站点A将对组管理员和组a中的所有用户可用,/ home / www / b中的站点b将对组管理员和组中的所有用户可用b等我想根据目录名保留所有内容,这样我就可以轻松地将htpasswd用户添加到正确的组中并尽可能自动化,但是其他解决问题的建议当然是受欢迎的。

2 个答案:

答案 0 :(得分:3)

您可以从完全不同的角度解决问题:启用perl模块,您可以在httpd.conf中包含一些perl脚本。然后你可以做这样的事情:

<Perl>
my @groups = qw/ foo bar baz /;
foreach ( @groups ) {
    push @PerlConfig, qq| <Directory /home/www/$_> blah </Directory> |;
}
</Perl>

这样,您甚至可以从数据库中读取您的群组和其他信息,或者通过简单地通过/ home / www或其他任何您喜欢的内容来阅读。

答案 1 :(得分:0)

您尝试做的事情与per-user home directories非常相似。 Apache处理这些问题的方式是通过文件系统权限和.htaccess files。我不相信有任何方法可以在所附的指令(AuthName等)中使用正则表达式捕获。