Apacheの設定にインデックスファイルを追加する|DirectoryIndexでindex.phpを最優先にする方法

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Apache, Linuxtips, Webサーバー管理, サーバー管理 > Apacheの設定にインデックスファイルを追加する|DirectoryIndexでindex.phpを最優先にする方法
「URLでディレクトリを指定したのに、ファイル一覧が表示されてしまう」
\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

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

DirectoryIndexとは

DirectoryIndex は、クライアントがURLでディレクトリを指定した際に、Apacheが最初に検索してサービスするファイル名を設定するディレクティブです。

たとえば、https://www.example.com/ にアクセスした場合、Apacheは DirectoryIndex に指定されたファイルをドキュメントルート内で検索し、最初に見つかったファイルを返します。

デフォルト設定では index.html のみが指定されていることが多く、index.phpindex.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.conf

index.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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。