ディレクティブには使用できる場所の規定があり、それ以外の場所で使用するとサーバが動作しなくなることがあります。
区分 | |
---|---|
サーバ設定ファイル | 以下のファイル内
|
バーチャルホスト | サーバ設定ファイル内の、以下のコンテナ内
|
ディレクトリ | サーバ設定ファイル内の、以下のコンテナ内
|
.htaccess | 以下のファイル内 |
特定のディレクティブの使用を、明示的に禁止できます。
AllowOverride All|None|directive-type [directive-type] ...AllowOverride ディレクティブ - core - Apache HTTP サーバ
Allを指定するとすべてのディレクティブが許可され、Noneではすべてが禁止されます。ディレクティブを個別に許可/禁止するには、許可するディレクティブを列挙します。レンタルサーバなどでこの設定がされていると、特定のディレクティブが使用できないことになります。
filenameに一致したファイルにだけ、<Files>セクション内のディレクティブを適用させます。filenameはファイル名かワイルドカード文字列です。
<Files filename> ... </Files><Files> ディレクティブ - Apache HTTP サーバ
ファイル名を正規表現で指定したいならば、<FilesMatch>ディレクティブを使います。
<FilesMatch regex> ... </FilesMatch><FilesMatch> ディレクティブ - Apache HTTP サーバ
なお、<Files ~ regex>
のように<Files>で正規表現を使用することも可能ですが、<FilesMatch>を使用することが推奨されています。
開発環境と本番環境で異なる設定を適用するには、次のような方法があります。
1番目の方法について解説します。
まずApacheの起動時に定数を定義するには、それをWindowsのサービスとして起動しているならば、レジストリを書き換える必要があります。[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Apache*.*]のImagePathがそれで、この値の末尾に[-D TEST]のように追記します。この設定を有効にするには、ここでサービスを再起動します。
次に.htaccessでは、<IfDefine>で
<IfDefine TEST> # 開発環境での設定 </IfDefine> <IfDefine !TEST> # 本番環境での設定 </IfDefine>
のように記述することで、開発環境と本番環境で異なる設定を適用できます。