次のコードが機能するかどうか疑問に思っています。
_<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
_に移動した場合、URLを開くには、グループ_a-repository-name
_に属している必要があります。
何らかの理由でこのコードを機能させることができず、Apacheは次を返します:Authorization of user **** to access /a-repository-name failed, reason: user is not part of the 'require'ed group(s).
_Require group $1
_の適切な変数と一致していないと思います。
これは正しい方法ですか、それとも何かが足りませんか?
LocationMatch
はバックリファレンスをサポートしていません。2.4.8より前のバージョンでは、バックリファレンスをサポートできません。
Apacheドキュメント によると、これは現在サポートされています...
2.4.8以降、名前付きグループと後方参照がキャプチャされ、対応する名前の前に「MATCH_」が付いて大文字で環境に書き込まれます。これにより、URLの要素をmod_rewriteなどの式やモジュール内から参照できます。混乱を防ぐために、番号付き(名前なし)の後方参照は無視されます。代わりに名前付きグループを使用してください。
<LocationMatch "^/combined/(?<sitename>[^/]+)">
require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
</LocationMatch>