AllowOverrideディレクティブ:.htaccessを使った設定の上書きを許可する

AllowOverride ディレクティブは、 .htaccess を使ってどのディレクティブに関する設定を変更することができるのかを指定する場合に使用します。設定変更の許可はディレクティブ単位ではなく、複数のディレクティブをまとめたグループ単位で行います。ここでは Apache の AllowOverride ディレクティブの使い方について解説します。

(Last modified: )

AllowOverrideディレクティブの書式

AllowOverride ディレクティブを使用すると、対象のディレクトリに設置した .htaccess で設定を変更することができるディレクティブの種類を設定することができます。書式は次のとおりです。

AllowOverride ディレクティブの種類 [ディレクティブの種類] ...

記述できる場所は Directory です。

設定変更を許可するディレクティブの種類を指定します。種類はディレクティブ毎ではなく、同じようなディレクティブをまとめたグループを指定します。指定可能なグループは次の通りです。

AuthConfig  認証に関するディレクティブ
FileInfo    ドキュメントに関するディレクティブ
Indexes     ディレクトリインデックスに関するディレクティブ
Limit       (以前の)アクセス制御をに関するディレクティブ
Options[=Option,...]  Options ディレクティブ

AuthConfig は認証に関するディレクティブの設定変更を許可する場合に指定します。 BASIC 認証で使用する AuthName ディレクティブや AuthName ディレクティブの他、アクセス制御で使用する Require ディレクティブもここに含まれます。

FileInfo はドキュメントに関するディレクティブの設定変更を許可する場合に指定します。 ErrorDocument ディレクティブや SetEnvIf ディレクティブの他、リダイレクトの設定で使用する RewriteEngine ディレクティブや RewriteCond ディレクティブもここに含まれます。

Indexes はディレクトリインデックスに関するディレクティブの設定変更を許可する場合に指定します。 DirectoryIndex ディレクティブや IndexOptions ディレクティブが含まれます。

Limit は Apache 2.2 以前で使われていたアクセス制限に関するディレクティブの設定変更を許可する場合に指定します。 Allow ディレクティブ, Deny ディレクティブや, Order ディレクティブが含まれます。

Options は Options ディレクティブに関する設定変更を許可する場合に指定します。 単に Options を指定した場合はすべての Options のオプションが変更可能となります。特定のオプションだけを変更可能にする場合は Options=ExecCGI,Indexes のように = のあとにオプションを記述してください。複数のオプションを指定する場合はカンマ(,)で区切り続けて記述します。

※ Options ディレクティブについては「Optionsディレクティブ:ディレクトリで使用可能な機能を設定する」を参照されてください。

AllowOverrideディレクティブの記述方法

AllowOverride ディレクティブはディレクトリに対して使用するため、 Directory ディレクティブのブロック内で記述します。例えば d:\pg\Apache\Apache24\htdocs\user ディレクトリに設置した .htaccess で設定の変更を許可する場合には AllowOverride ディレクティブを次のように記述します。

<Directory d:/pg/Apache/Apache24/htdocs/user>
  AllowOverride ディレクティブの種類 ディレクティブの種類 ...
</Directory>

※ Directory ディレクティブについては「Directoryディレクティブ/DirectoryMatchディレクティブ:設定が適用されるディレクトリを指定する」を参照されてください。

すべてのディレクティブの設定を許可する

すべてのディレクティブの設定変更を許可するには All を指定します。

<Directory d:/pg/Apache/Apache24/htdocs/user>
  AllowOverride All
</Directory>

.htaccessの利用を許可しない

.htaccess の利用を許可しない場合は None を指定します。

<Directory d:/pg/Apache/Apache24/htdocs/user>
  AllowOverride None
</Directory>

特定のディレクティブの種類の設定を許可する

特定のディレクティブの種類の設定変更を許可するには、許可するディレクティブの種類を半角スペースで区切って記述してください。例えば AuthConfig と Options の 2 つのディレクティブの種類に設定変更の許可をするには次のように記述します。

<Directory d:/pg/Apache/Apache24/htdocs/user>
  AllowOverride AuthConfig Options
</Directory>

httpd.conファイルでの記述

httpd.conf ファイルにはデフォルトで次のように記述されています。

<Directory />
    AllowOverride none
</Directory>

<Directory "${SRVROOT}/htdocs">
    AllowOverride None
</Directory>

<Directory "${SRVROOT}/cgi-bin">
    AllowOverride None
</Directory>

3 つのディレクトリに対してそれぞれ AllowOverride None が設定されています。ドキュメントルートに対しても AllowOverride None が設定されていますので、デフォルトの状態ではドキュメントルート以下のどのディレクトリに対して .htaccess を設置しても無視されます。

ディレクティブがどのディレクティブのグループに含まれるのか

現在このサイトで解説しているディレクティブに関して、どのディレクティブのグループに含まれるのかを下記に記載します。なお Files ディレクティブと FilesMatch ディレクティブを .htaccess の中で使用できるようにするには AllowOverride All を指定する必要があります。

[All]
Files
FilesMatch

[Indexes]
DirectoryIndex
DirectorySlash

[Options]
Options

[FileInfo]
Redirect
AddType
SetEnvIf
ErrorDocument
RewriteEngine
RewriteRule
RewriteCond
RewriteOptions

[AuthConfig]
Require
AuthType
AuthName
AuthBasicProvider
AuthUserFile
AuthGroupFile
AuthDigestDomain
AuthDigestProvider

[Limit]
Order
Allow
Deny

-- --

Apache の AllowOverride ディレクティブの使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。