HTACCESS ファイル形式とは?
.htaccess は Apache Web サーバーの設定ファイルです。ほとんどのファイルとは異なり、.htaccess にはドットの前にファイル名が含まれていません。先頭のドットは名前自体の一部であり、Linux や macOS ではデフォルトで隠しファイルになります。.htaccess ファイルは、権限のないユーザーや資格のないユーザーが手動で編集すべきではありません。このファイルはすべての設定をプレーンテキストで保存します。
.htaccess ファイルには、次のようなサーバー機能を定義するディレクトリごとの設定が含まれています:
- ディレクトリのインデックス(デフォルト)ページ
- 特定の IP アドレスに対するアクセス制限
- カスタムエラーページ(例:404 Page Not Found)
- URL のリダイレクトと書き換え(
RewriteRule/RewriteCond) - ディレクトリのパスワード保護(
AuthType、AuthUserFile) - 追加のサーバーセキュリティ設定とカスタム HTTP レスポンスヘッダー
.htaccess を有効にするには、親の httpd.conf で AllowOverride が None 以外に設定されている必要があります。セキュリティが強化されたサーバーでは、.htaccess の処理が完全に無効化されていることがよくあります。
Apache はそのディレクトリへの すべての HTTP リクエスト ごとに .htaccess を読み取るため、測定可能なパフォーマンスコストが発生します。Apache 自身のドキュメントでは、同等のディレクティブをサーバーまたは VirtualHost の設定ブロックに配置することを推奨しています。これらは起動時に一度だけ読み込まれるためです。
.htaccess は Apache 専用です。Nginx はこれをサポートしておらず、nginx.conf に同等のルールを記述する必要があります。関連ファイルの .htpasswd は、HTTP 基本認証用のハッシュ化された資格情報を保存します。
セキュリティと安全性
リスク: HIGH.htaccess 自体はエディタで開いても無害なテキストファイルです。しかし、Web サーバーにおいては「極めて重要な」攻撃対象となります:1. アップロード攻撃:Web アプリがユーザーに Web 公開ディレクトリへのファイルアップロードを許可しており、かつ Apache の AllowOverride が .htaccess を許可している場合、細工された .htaccess をアップロードした攻撃者は、アップロードディレクトリでの PHP 実行を再有効化し、Web シェルを実行できる可能性があります。対策:アップロードファイルはドキュメントルートの外に保存する、アップロードディレクトリに AllowOverride None を設定する、アップロードディレクトリでの .htaccess 作成をブロックする。2. 情報漏洩:.htaccess を(ドットファイルへのアクセスをブロックせずに)テキストファイルとして提供してしまう誤設定されたサーバーは、サーバー設定、ディレクトリ構造、および潜在的な資格情報の参照を露出させます。Apache のデフォルト設定では、.htaccess ファイルへのアクセスはブロックされています(FilesMatch ^\.ht)。
形式の詳細
概要HTACCESS ファイルを開くプログラム
技術的詳細
詳細仕様| 起源 | NCSA HTTPd (1994) から継承。Apache HTTP Server はバージョン 1.0 (1995) からサポートしています |
| ファイル名 | ドットファイル - 完全なファイル名は `.htaccess` です。Unix および macOS ではデフォルトで非表示になります |
| ファイルタイプ | プレーンテキストのディレクトリごとの Apache 設定 |
| エンコーディング | UTF-8 または ASCII(サーバーのロケールと一致する必要があります) |
| 標準的なファイルサイズ | 100 バイト - 50 KB(ほとんどのファイルは 5 KB 未満) |
| 処理頻度 | 格納されているディレクトリおよびすべてのサブディレクトリへの HTTP リクエストごとに Apache によって読み取られます |
| 前提条件 | 親の `httpd.conf` で `AllowOverride` が `None` であってはなりません。そうでない場合、`.htaccess` は暗黙的に無視されます |
| 一般的なディレクティブ | `RewriteRule`, `RewriteCond`, `ErrorDocument`, `AuthType`, `AuthUserFile`, `Header`, `Options`, `Redirect` |
| アクセス制御構文 | Apache 2.4 では `Allow`/`Deny` が `Require` に置き換えられました。古い構文には `mod_access_compat` が必要です |
| Nginx 互換性 | Nginx ではサポートされていません。ルールは手動で `nginx.conf` のディレクティブに変換する必要があります |
| パフォーマンスに関する注意 | リクエストごとのディスク読み取りが発生します。Apache は設定に `httpd.conf` または VirtualHost ブロックを使用することを推奨しています |
| セキュリティリスク | 書き込み可能な Web ディレクトリに攻撃者がアップロードした `.htaccess` は、サーバーサイドスクリプトの実行を可能にする可能性があります |
| リリース日 | 1994 (NCSA HTTPd, predecessor to Apache; Apache inherited it from 1995) |
| 最新バージョン | Apache HTTP Server 2.4.x directive syntax (current) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | httpd.apache.org |
HTACCESS の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。HTACCESS ファイルについて最初の質問をしてみましょう。