この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:guest
更新日時:2026-06-11 07:07:02

タイトル: Options -Indexes
SEOタイトル: Apache Options -Indexes 完全ガイド(ディレクトリ一覧の無効化 / .htaccess / セキュリティ)

この記事の要点
  • Options -Indexes は Apache のディレクトリ一覧表示を無効化するディレクティブ
  • http://example.com/dir/ のように末尾スラッシュで index ファイルがない場合、デフォルトではディレクトリ内の全ファイル一覧が表示される(autoindex)
  • セキュリティリスク: 公開予定でないファイル(バックアップ、設定、ログ)が見えてしまう
  • .htaccess または httpd.confOptions -Indexes を書く — 多くのレンタルサーバはデフォルト無効、自前サーバは要設定
  • 無効化すると 403 Forbidden が返る。404 を返したいなら ErrorDocument で差し替え

Options -Indexes とは

Apache HTTP Server には autoindex という機能があり、ディレクトリにアクセスしたとき index ファイル(index.html 等)が無い場合、ディレクトリ内のファイル一覧を HTML として返します。便利な機能ですが、公開サーバでは意図しない情報漏洩の元になります。

Options -Indexes は autoindex を無効化するディレクティブで、セキュリティ上ほぼ必須の設定です。

なぜリスクなのか

autoindex が有効だと、次のようなものが意図せず公開される可能性があります。

  • バックアップファイルconfig.php.bak.sql
  • ログファイルerror.log
  • 設定ファイル.env のうっかり配置)
  • 開発中のページ(リンク非公開で URL 直打ちでなければ見えないつもりのもの)
  • ディレクトリ構造そのもの(攻撃の手がかり)

設定方法

.htaccess での設定

多くの共有レンタルサーバでは .htaccess をディレクトリに置くだけで設定できます。

# /var/www/html/.htaccess
Options -Indexes

httpd.conf(または conf.d)での設定

自前で Apache を運用する場合は、メイン設定ファイルに書きます。


    Options -Indexes
    AllowOverride All
    Require all granted

全サイトに一括適用

# httpd.conf のトップで

    Options -Indexes
    AllowOverride None
    Require all denied


# その上で公開ディレクトリだけ別途許可

    Options -Indexes
    Require all granted

Options ディレクティブの記法

記法意味
Options Indexes有効化(上書き設定)
Options -Indexes無効化(差分で打ち消し)
Options +Indexes有効化(差分で追加)
Options All -IndexesAll - Indexes
Options None全てのオプションを無効化

+ / - は前の設定との差分で適用、付けないとフル上書きになる点に注意。継承の挙動が変わるので、+ / - を付ける運用が推奨です。

設定後の挙動

autoindex を無効化した状態で index.html 等が無いディレクトリにアクセスすると、Apache は403 Forbidden を返します。

$ curl -I http://example.com/somedir/
HTTP/1.1 403 Forbidden
Server: Apache/2.4.x

404 を返したい場合

403 だと「ディレクトリは存在するがアクセス禁止」と示してしまうため、404 Not Found を返したい場合は ErrorDocument で差し替えるか、RewriteRule で 404 にします。

# 403 を 404 ページ表示に差し替え
ErrorDocument 403 /404.html

# 完全に 404 として返したい場合
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [R=404,L]

一覧表示を残したい特定ディレクトリ

ファイル共有用などであえて一覧表示したいディレクトリがある場合、サイト全体で -Indexes としつつ、そのディレクトリだけ +Indexes を設定できます。


    Options -Indexes



    Options +Indexes

その他のセキュリティオプション

設定効果
ServerSignature Offエラー画面の Apache バージョン非表示
ServerTokens Prodレスポンスヘッダの Apache バージョン詳細を隠す
TraceEnable OffTRACE メソッド無効化
Options -ExecCGICGI 実行禁止
Options -FollowSymLinksシンボリックリンクの追跡禁止

設定の確認方法

# .htaccess を有効にする AllowOverride の確認
sudo apachectl -t           # 構文チェック
sudo apachectl -S           # VirtualHost 一覧
sudo apachectl -M | head    # ロード中モジュール

# 設定変更後はリロード
sudo systemctl reload httpd     # RHEL 系
sudo systemctl reload apache2   # Debian / Ubuntu

autoindex 自体のカスタマイズ

あえて autoindex を使う場合、見た目をカスタマイズできます。


    Options +Indexes

    # ファイル名 / サイズ / 日付 等の表示制御
    IndexOptions FancyIndexing FoldersFirst NameWidth=* HTMLTable

    # 一覧から除外するファイル
    IndexIgnore .htaccess .htpasswd *.bak

    # ヘッダ / フッタの HTML
    HeaderName /header.html
    ReadmeName /footer.html

FAQ

Q: 設定したのに一覧が出るのはなぜ?
A: AllowOverrideNone だと .htaccess の Options が無視されます。AllowOverride All または Options を含む値を指定する必要があります。

Q: nginx で同じことは?
A: nginx はデフォルトで autoindex 無効。明示的に有効化したいなら autoindex on;

関連

  • httpd.conf のファイルの場所 — メイン設定ファイル
  • AllowOverride — .htaccess の有効範囲
  • .htaccess — ディレクトリ単位設定
  • mod_autoindex — Apache のディレクトリ一覧モジュール