index.php と index.html が両方あるとどうなる?表示されない原因と解決方法

Webアプリ開発記録

「index.phpをアップしたのに反映されない」
「なぜか古いページが表示される」

その原因は、かなりの確率でこれです。

index.html と index.php が両方存在している


結論:先に読まれた方だけが表示される

サーバーはトップページにアクセスされたとき

【 https://example.com/ 】

あらかじめ決められた順番でファイルを探します。
そして、最初に見つかったファイルだけを表示します。


実際の状態

/public_html/
├ index.html
├ index.php

この状態では、どちらか一方しか表示されません。


エックスサーバーでの挙動

初期状態では、index.html が優先されることが多いです。

つまり

  • index.html は表示される
  • index.php は存在していても表示されない

よくあるトラブル

WordPressを入れたのに表示されない

WordPressは index.php を使います。
しかしサーバーに index.html が残っていると、そちらが優先されます。

結果として、WordPressが表示されません。


修正したのに反映されない

index.php を編集しても画面が変わらない場合、
実際には index.html が表示されている可能性があります。


なぜか昔のページが出る

古い index.html が残っているだけ、というケースが多いです。


解決方法(これだけでOK)

方法①:index.html を削除(最も簡単)

index.html → 削除

これで index.php が表示されるようになります。


方法②:名前を変える

index.html → index_old.html

バックアップを残したい場合に有効です。


方法③:優先順位を変更(上級者)

.htaccess に以下を追加します。

DirectoryIndex index.php index.html

これで index.php を優先できます。


なぜこんなことが起きるのか

サーバーはトップページにアクセスされたとき、
「どのファイルを表示するか」を決める必要があります。

そのため「DirectoryIndex」という優先順位のリストを持っています。
この順番に従ってファイルを探し、最初に見つかったものを表示します。


イメージで理解する

  • URLは建物の住所
  • indexファイルは受付
【 https://example.com/ 】

住所までは分かっているが、どの部屋かは指定されていない状態です。
そのためサーバーは受付(indexファイル)を探します。

  • index.html が見つかれば、それを表示
  • index.php はその時点で探されません

チェックリスト(1分で確認)

  • index.html が残っていないか
  • index.php が存在するか
  • 表示したいファイルはどちらか

迷った場合は、index.html を一度削除して確認するのが確実です。


まとめ

  • index.php と index.html が両方あると、表示されるのはどちらか一方のみ
  • 多くの環境では index.html が優先される
  • 解決方法はシンプルで、index.html を削除するか名前を変更するだけ

これだけで「反映されない」「古いページが出る」といった問題は解消できます。

コメント

タイトルとURLをコピーしました