Мне интересно, должен ли работать следующий код:
<LocationMatch "/(.*)([/])?(.*)">
Order allow,deny
Allow from all
AuthType Basic
AuthName "Git"
AuthUserFile /git/.htpasswd
AuthGroupFile /git/.htgroup
Require group $1
</LocationMatch>
Я пытаюсь добиться этого, чтобы потребовать группу, основанную на первой переменной регулярного выражения. Итак, если пользователь перейдет к http://localhost/a-repository-name
он должен быть в группе a-repository-name
чтобы иметь возможность открыть URL-адрес.
По какой-то причине я не могу заставить этот код работать, и apache возвращает: Authorization of user **** to access /a-repository-name failed, reason: user is not part of the 'require'ed group(s).
Я думаю, это не соответствует правильной переменной в Require group $1
.
Это правильный способ сделать или я что-то упускаю?
Согласно Документация Apache теперь это поддерживается ...
Начиная с версии 2.4.8, именованные группы и обратные ссылки захватываются и записываются в среду с соответствующим именем с префиксом «MATCH_» и в верхнем регистре. Это позволяет ссылаться на элементы URL-адресов из выражений и модулей, таких как mod_rewrite. Во избежание путаницы пронумерованные (безымянные) обратные ссылки игнорируются. Вместо этого используйте именованные группы.
<LocationMatch "^/combined/(?<sitename>[^/]+)">
require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
</LocationMatch>
LocationMatch
не поддерживает обратную ссылку, вы не можете сделать это в версиях до 2.4.8.