Filesディレクティブ/FilesMatchディレクティブ:設定が適用されるファイルを指定する

広告

Files ディレクティブは、他のディレクティブを使った設定が適用されるファイルを指定するときに使用します。また FilesMatch ディレクティブは正規表現を使って適用するファイルを指定することができます。ここでは Apache の Files ディレクティブおよび FilesMatch ディレクティブの使い方について解説します。

Filesディレクティブの使い方

Files ディレクティブは、他のディレクティブを使った設定の適用する範囲をファイル単位で指定する場合に使用します。書式は次のとおりです。

<Files ファイル名>
  ...
  設定ディレクティブ
  ...
</Directory>

記述できる場所は httpd.conf, VirtualHost, Directory, .htaccess です。 .htaccess で設定する場合は AllowOverride All が設定されている必要があります。

ファイル名で指定した値がファイルの最後に一致するすべてのファイルが対象となります。どこのディレクトリにファイルがあるのかは関係ない点に注意してください。ファイル名に一致するファイルがすべて対象となります。

例えばファイルの末尾が .png と一致するすべてのファイルに対する設定を行いたい場合は次のように記述します。

<Files .png>
  ...
  設定ディレクティブ
  ...
</Files>

ワイルドカードを使った指定

ファイルの指定には「*」や「?」などのワイルドカードを使った指定も可能です。「*」は任意の文字、「?」は任意の 1 文字にマッチします。(ただしいずれもスラッシュ(/)にはマッチしません)。

例として httpd.conf ファイルにデフォルトで次の記述があります。

<Files ".ht*">
  Require all denied
</Files>

この場合は、 .ht で始まるすべてのファイルが設定の対象となります。

ディレクトリとファイルを組み合わせて適用範囲を指定する

Directory ディレクティブを使用すると設定を適用するディレクトリを設定することができますが、 Files ディレクティブと組み合わせることで指定したディレクトリの中にある指定したファイルに対して設定を適用することができます。

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

<Directory パス名>
  ...
  ...

  <Files ファイル名>
    ...
    設定ディレクティブ
    ...
  </Files>
</Directory>

Directroy ディレクティブのブロック内に Files ディレクティブを記述します。この場合、指定したパス名のディレクトリまたはサブディレクトリの中にある指定したファイル名と一致するファイルが対象となります。

例えば d:/pg/Apache/Apache24/htdocs/private ディレクトリの中にあるファイルの末尾が .doc のファイルに対する設定を行いたい場合は次のように記述します。

<Directory d:/pg/Apache/Apache24/htdocs/private>
  <Files .doc>
    ...
    設定ディレクティブ
    ...
  </Files>
</Directory>

FilesMatchディレクティブによる正規表現を使ったファイルの指定

FilesMatch ディレクティブは、基本的な使い方は Files ディレクティブと同じですがファイルの指定に正規表現を使用することができます。書式は次のとおりです。

<FilesMatch 正規表現を使ったファイル名>
  ...
  設定ディレクティブ
  ...
</FilesMatch>

記述できる場所は httpd.conf, VirtualHost, Directory, .htaccess です。 .htaccess で設定する場合は AllowOverride All が設定されている必要があります。

設定を適用するファイルを正規表現を使って指定します。例えば .png .jpeg .jpg のいずれかで終わるファイルに対して設定を行いたい場合は次のように記述することができます。

<FilesMatch .(jpe?g|png)$>
  ...
  ...
</FilesMatch>

なお正規表現を使ったファイルの指定は Files ディレクティブでも使用が可能です。正規表現を使用する場合はファイル名の前にチルダ (~) を記述してください。

<FilesMatch ~ .(jpe?g|png)$>
  ...
  ...
</FilesMatch>

正規表現の記述方法については「正規表現入門」を参照されてください。

-- --

Apache の Files ディレクティブおよび FilesMatch ディレクティブの使い方について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。