Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式捕获和替换可以与Apache DirectoryMatch指令一起使用吗?_Regex_Apache - Fatal编程技术网

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

Regex 正则表达式捕获和替换可以与Apache DirectoryMatch指令一起使用吗?,regex,apache,Regex,Apache,有人知道在Apache的DirectoryMatch指令中是否可以使用正则表达式捕获吗?我想做如下事情: <DirectoryMatch ^/home/www/(.*)> AuthType Basic AuthName $1 AuthUserFile /etc/apache2/svn.passwd Require group $1 admin </DirectoryMatch> AuthType Basic AuthName$1 Aut

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

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

AuthType Basic
AuthName$1
AuthUserFile/etc/apache2/svn.passwd
需要组$1管理员
但到目前为止我还没有成功

具体地说,我正在尝试在Apache2.0中为服务器上的各个目录/vhost创建基于组的HTTP身份验证


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

您尝试执行的操作看起来非常类似。Apache处理这些问题的方式是通过文件系统权限和。我不认为有任何方法可以在附带的指令(AuthName等)中使用regex捕获。

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

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

my@groups=qw/foo-bar-baz/;
foreach(@groups){
推@PerlConfig,qq |等等|;
}

这样,您甚至可以从数据库或通过简单的globing/home/www或其他任何您喜欢的方式来读取您的组和其他信息。

这非常方便,但几乎“无法阅读”,因为每一个包含Perl和Apache的搜索都会得到大量关于如何将Apache配置为运行cgi脚本的答案。其他苦苦挣扎的谷歌人的参考: