設定 - .htaccess
提供: MochiuWiki : SUSE, EC, PCB
📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
概要
Filesディレクティブ
Apache2のセキュリティを向上させる重要なツールの1つである。
Filesディレクティブは、特定のファイルやファイルタイプに対してアクセス制御を行うために使用する。
特定のファイルやファイルタイプへのアクセスを制御することにより、機密情報の保護や不正アクセスの防止に役立つ。
- 特定のファイルへのアクセス制御
- 特定のファイル名やファイルパターンに対して、アクセス権限を設定できる。
- セキュリティ強化
- 重要なファイルや設定ファイルへの不正アクセスを防ぐ。
- 柔軟な設定
- ワイルドカードを使用して、複数のファイルに一度に適用することができる。
<Files "filename">
# ここにディレクティブを記述
</Files>
# 例 1: .htaccessファイル自体へのアクセスを拒否する場合
<Files ".htaccess">
Require all denied
</Files>
# または
<Files ~ "^.*\.([Hh][Tt][Aa][Cc][Cc][Es][Ss][Ss])$">
Order allow,deny
Deny from all
</Files>
# 例 2: 複数のファイルタイプに対して設定を適用する場合
<Files ~ "\.(php|ini)$">
Require all denied
</Files>
FilesMatchディレクティブ
FilesMatchディレクティブは、Filesディレクティブの拡張版と考えることができる。
正規表現を使用することにより、複雑なルールを簡潔に記述でき、Apache2のセキュリティと柔軟性を向上させることができる。
特に、より精密なファイルアクセス制御が必要な場合に有用である。
- 正規表現によるマッチング
- FilesMatchは正規表現を使用してファイル名やパターンにマッチするため、より柔軟で強力なマッチングが可能である。
- 複雑なパターンの指定
- 複数の条件や複雑なファイル名パターンに対して設定を適用できる。
- 効率的な設定
- 1つのディレクティブで多様なファイルタイプやパターンを指定できるため、設定がより簡潔になる。
<FilesMatch "<正規表現>">
# ここにディレクティブを記述
</FilesMatch>
# 例 1: 特定の拡張子を持つファイルへのアクセスを拒否する場合
# 指定された拡張子 (.htaccess、.htpasswd、.ini等) を持つファイルへのアクセスを拒否している
<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
Require all denied
</FilesMatch>
# 例 2: 特定のパターンを含むファイル名へのアクセスを許可する場合
# "index"、"main"、"home"で始まり、".php"または".html"で終わるファイルへのアクセスを許可している
<FilesMatch "^(index|main|home)\.(php|html)$">
Require all granted
</FilesMatch>
# 例 3: 特定の文字で始まるファイルへのアクセスを制限する場合
# 数字で始まる全てのファイルへのアクセスを拒否している
<FilesMatch "^[0-9]">
Require all denied
</FilesMatch>
# 例 4: .htaccessファイルと同階層にあるhogeディレクトリ内にある全てのXMLファイルへのアクセスを拒否する場合
# サイトマップは全て閲覧可能にする
<FilesMatch "^hoge/.*\.xml$">
Require all denied
</FilesMatch>
Directoryディレクティブ
Directoryディレクティブは、Apache2の設定を細かく制御するための重要なツールである。
Directoryディレクティブは、特定のディレクトリやそのサブディレクトリに対して設定を適用するために使用する。
サイトの構造に合わせて適切に使用することにより、セキュリティ、パフォーマンス、機能性を向上させることができる。
- ディレクトリ単位の設定
- 特定のディレクトリとそのサブディレクトリに対して、一括で設定を適用できる。
- 階層的な設定
- Webサイトの構造に合わせて、異なるディレクトリに異なる設定を適用できる。
- 柔軟なアクセス制御
- 特定のディレクトリに対するアクセス権限、実行可能なスクリプト、インデックスオプション等を制御できる。
<Directory "/path/to/directory">
# ここにディレクティブを記述
</Directory>
# 例 1: 特定のディレクトリへのアクセスを制限する場合
# /var/www/html/adminディレクトリへのアクセスにおいて、特定のIPアドレス範囲とホストからのみ許可している
<Directory "/var/www/html/admin">
Require ip 192.168.1.0/24
Require host example.com
</Directory>
# 例 2: .htaccessファイルと同階層にあるhogeディレクトリおよび直下のファイル群へのアクセスを拒否する場合
# "hoge"は、.htaccessファイルからの相対パス
# "/hoge"は、ドキュメントルートからの相対パス
<Directory "hoge">
Require all denied
</Directory>
# 例 3: ディレクトリ内のPHPファイルの実行を禁止する場合
# /var/www/html/uploadsディレクトリ内のPHPファイルの実行を禁止している
<Directory "/var/www/html/uploads">
<FilesMatch "\.php$">
Require all denied
</FilesMatch>
</Directory>
# 例 4: ディレクトリインデックスを設定する場合
# /var/www/html/publicディレクトリでディレクトリリスティング (インデックス) を有効にして、見栄えの良い表示オプションを設定している
<Directory "/var/www/html/public">
Options +Indexes
IndexOptions FancyIndexing
</Directory>
# 例 5: 特定のディレクトリでのリライトルールの適用する場合
# /var/www/html/blogディレクトリ内で特定のURLパターンをPHPスクリプトにリダイレクトしている
<Directory "/var/www/html/blog">
RewriteEngine On
RewriteRule ^article-([0-9]+)\.html$ article.php?id=$1 [L]
</Directory>