まだ出来ない
もう散々やってるのに未だにスムーズに行かないのは
多分Apache2.0/2.2/2.4の書き方を混在させ続けているせい...
変に互換があると良くないです。
条件
- 特定のIPアドレスは全て認証無しでアクセス可
- ↑以外はBasic認証が必須
- 特定のURL(/api)はBasic認証不要
対応
ssl-vhost-nikusui.conf
SetEnvIf Request_URI '/api' valid-url
SetEnvIf Request_URI '^/index.php' cms
AuthType Basic
AuthName "Available only authorized users by Osaka Tokyo"
AuthUserFile /home/nikusui/.htpasswd
#Require valid-user
<RequireAny>
Require ip 999.999.999.999
Require valid-user
Require env valid-url
Require env cms
</RequireAny>
解説
ミソになるのはRequireAnyディレクティブ。
いずれかの条件を満たせばOKのやつ。
Basic認証の一連の処理の中に↓を含めないこと。
Require valid-user
index.phpをcmsと命名して除外しているのは
WordpressとかLaravelでルートパラメータのRewriteを失敗しないための除外
なのでFrameworkやCMSでない場合は不要
Order Allow/Denyとかはもう使わない前提でやらないとな〜と思った。
(そもそも最近apacheじゃなくてnginxが個人的な主流でもあるので...)