Apache2.4で一部のディレクトリのみBasic認証

2017-11-24

#Server

一部のディレクトリのみBasic認証したいケースがあり、.htaccessで設定しました。

前提

  • Apache 2.4
  • .htaccess使用可能

.htaccess

次の通り。

<Files ~ "^\.(htpasswd|htaccess)$">
  Require all denied
</Files>

<Files ~ "^(?!\.htpasswd|\.htaccess).*">
  Require all denied

  # このURLは認証をかけたい
  SetEnvIf Request_URI "/api/something.*" urlEndpoint

  <RequireAll>

    AuthType Basic
    AuthName "id, pass."
    AuthUserFile  /some/directory/.htpasswd
    AuthGroupfile /dev/null

    Require all granted

    <RequireAny>

    # Basic認証必要
    <RequireAll>
      Require valid-user
      Require env urlEndpoint
    </RequireAll>

    # それ以外は通常アクセス可能
    <RequireAll>
      Require all granted
      Require not env urlEndpoint
    </RequireAll>

    </RequireAny>

  </RequireAll>
</Files>

Apache2.2, 2.4環境を行き来すると、間違ってallow, denyで設定を書いてしまったり。 気をつけないと。

© kdtakahiro 2018