\n「index.htmlではなくindex.phpをデフォルトページにしたい」
\n
\nApacheの
DirectoryIndex ディレクティブを設定することで、ディレクトリアクセス時に表示するデフォルトファイルを指定できます。優先順位も制御できるため、WordPressなどのPHPサイト構築でも必須の設定です。\n
\nこの記事では、Apacheの設定ファイル(httpd.conf)で
DirectoryIndex を設定する方法を、基本の追加・変更から複数ファイルの優先順位指定まで実践的に解説します。\n
\n
\n\n・
DirectoryIndex でディレクトリアクセス時のデフォルトファイルを指定できる\n・複数ファイルを指定すると左から順に優先して検索される
\n・設定ファイルは
/etc/httpd/conf/httpd.conf の <IfModule dir_module> 内\n・設定変更後は
systemctl reload httpd で再読み込みが必要\n・PHPサイトでは
index.php を最優先に設定するのが一般的\n
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
DirectoryIndexとは
DirectoryIndex は、クライアントがURLでディレクトリを指定した際に、Apacheが最初に検索してサービスするファイル名を設定するディレクティブです。たとえば、
https://www.example.com/ にアクセスした場合、Apacheは DirectoryIndex に指定されたファイルをドキュメントルート内で検索し、最初に見つかったファイルを返します。デフォルト設定では
index.html のみが指定されていることが多く、index.php や index.htm は別途追加が必要です。DirectoryIndexの設定場所を確認する
設定はhttpd.conf の <IfModule dir_module> セクション内にあります。# httpd.conf の DirectoryIndex 設定を確認する [root@server ~]# grep -n "DirectoryIndex" /etc/httpd/conf/httpd.conf 165: DirectoryIndex index.html
・RHEL/CentOS/Rocky Linux 系:
/etc/httpd/conf/httpd.conf・Debian/Ubuntu 系:
/etc/apache2/apache2.conf または /etc/apache2/mods-enabled/dir.conf・ソースコンパイル:
/usr/local/apache2/conf/httpd.confindex.phpをインデックスファイルに追加する
1. httpd.confを編集する
# httpd.conf を編集する [root@server ~]# vi /etc/httpd/conf/httpd.conf
2. DirectoryIndexを変更する
<IfModule dir_module> セクション内の DirectoryIndex を編集します。# 変更前(デフォルト設定)
DirectoryIndex index.html # 変更後(index.phpを最優先に、index.htmlも対応)DirectoryIndex index.php index.html index.htm
index.php が最優先で、見つからない場合は index.html、さらに index.htm の順で検索します。3. 設定を反映させる
編集後はconfigtest で構文確認してから設定を再読み込みします。# 設定ファイルの構文チェック [root@server ~]# httpd -t Syntax OK # 設定を再読み込みする(接続中のクライアントに影響なし) [root@server ~]# systemctl reload httpd # CentOS 6以前の場合 [root@server ~]# /etc/init.d/httpd reload
conf.dファイルで設定する(推奨)
httpd.confを直接編集する代わりに、/etc/httpd/conf.d/ 配下に専用の設定ファイルを作成する方法も推奨されます。アップデート時にhttpd.confが上書きされても設定が保持されるためです。# /etc/httpd/conf.d/directoryindex.conf に設定ファイルを作成する [root@server ~]# vi /etc/httpd/conf.d/directoryindex.conf # ファイルの内容
DirectoryIndex index.php index.html index.htm
バーチャルホスト単位で設定を変える
サーバーで複数のサイトを運用している場合、バーチャルホストごとにDirectoryIndex を設定できます。# バーチャルホスト設定例(/etc/httpd/conf.d/vhost.conf)
ServerName example.com DocumentRoot /var/www/html/example # このバーチャルホストでは index.php を最優先にする DirectoryIndex index.php index.html
まとめ
| やりたいこと | 設定・コマンド |
|---|---|
| index.phpを最優先にする | DirectoryIndex index.php index.html |
| index.htmも対応させる | DirectoryIndex index.html index.htm |
| 設定ファイルの確認 | grep -n "DirectoryIndex" /etc/httpd/conf/httpd.conf |
| 設定の反映(RHEL7以降) | systemctl reload httpd |
Apacheの設定だけでなく、Linuxサーバーを安全に構築・運用するための「型」を身につけたいですか?
DirectoryIndexをはじめとするApache設定を正しく理解することは、Webサーバー構築の基本です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Apacheのエラーログを設定する|ErrorLogとLogLevelの使い方・バーチャルホスト別設定
- 前のページへ:Apacheで採用しているモジュールを確認する方法|httpd -Mとmpm・mod_rewriteの有効確認
- この記事の属するカテゴリ:Apache・Linuxtips・Webサーバー管理・サーバー管理へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます