「index.html」だけじゃない?URLでファイル名が省略される「ディレクトリインデックス」の深い話

site-building image

Webサイトを閲覧しているとき、URLが https://example.com/ のように、ファイル名(index.html など)がない状態で終わっているのをよく見かけます。

前の記事では「サーバーが気を利かせて index.html を探して呼んでくれる」という話をしましたが、実は省略できるのは index.html だけではありません。

サーバーの設定次第では、全く別の名前のファイルが呼び出されていることもあるのです。

今回は、知っているようで知らない「ディレクトリインデックス」の仕組みを深掘りしていきましょう。

目次

サーバーの「優先順位リスト」を覗いてみよう

Webサーバー(ApacheやNginxなど)には、「ファイル名が省略されたときに、どの順番でファイルを探すか」という指示書が存在します。

これを専門用語で DirectoryIndex(ディレクトリ・インデックス)と呼びます。

例えば、多くの一般的なサーバーでは以下のような設定になっています。

DirectoryIndex index.php index.html index.htm

この一行には、サーバーの健気な努力が隠されています。

ユーザーがフォルダにアクセスしてきた際、サーバーはリストの左側から順番に「あるかな?」と探していくのです。

  1. まず index.php を探す(もしあれば、それを実行して表示)
  2. なければ index.html を探す(もしあれば表示)
  3. それもなければ index.htm を探す

つまり、私たちが index.html を省略できているのは、このリストにその名前が載っているからに過ぎません。

index.html 以外に「省略」される代表格

システムの裏側によって、省略されるファイルの種類は異なります。

代表的なものを挙げてみましょう。

index.php(動的サイトの王様)

WordPressなどのCMS(コンテンツ・マネジメント・システム)を使っている場合、主役は index.html ではなく index.php です。

PHPというプログラムがその場でページを組み立てて表示するため、このファイルが省略の対象となります。

default.aspxhome.asp(Microsoft系)

Windows系のサーバー(IIS)では、伝統的に index ではなく defaulthome という単語が使われることがあります。

index.cgiindex.pl(老舗サイト)

掲示板や古いシステムなどで、CGI(Perlなど)が動いている場合、これらのファイルが省略されるように設定されていることがあります。

なぜ「index.htm」という中途半端な名前があるのか?

ここで少し面白い歴史の話をしましょう。

index.html と並んでよく見かける index.htm(最後のLがないもの)。

なぜこんな似たような名前が共存しているのでしょうか?

その理由は、昔のパソコンのOS(MS-DOSなど)の制限にあります。

当時のシステムには「ファイル名は8文字以内、拡張子は3文字以内」という厳しいルール(8.3形式)がありました。

  • .html は4文字なのでエラーになる
  • .htm なら3文字なのでOK!

この時代の名残で、古いサーバーやシステムでは今でも index.htm が使われています。

現代のブラウザやサーバーはどちらも認識できますが、この1文字の差には「コンピュータの進化の歴史」が刻まれているのです。

もし「index」が2つあったらどうなる?

もし、一つのフォルダの中に index.phpindex.html の両方が置いてあったらどうなるでしょうか?

答えは、「設定ファイルの優先順位が高い方(先に書いてある方)が表示される」です。

先ほどのリストが index.php index.html の順であれば、たとえ index.html を一生懸命更新しても、ブラウザには index.php の内容しか表示されません。

Web制作の現場で「書き換えたはずなのに画面が変わらない!」というトラブルが起きたとき、実はこの「優先順位による椅子取りゲーム」が原因だった、というのはたまにある話です。

【応用編】自分だけの「省略ルール」を作る

実はこの「省略できるファイル名」は、サーバーの設定(.htaccess など)を書き換えることで自由に変更できます。

例えば、自分のサイトで「一番大事なファイルは main.html だ!」と思えば、サーバーにこう命令できます。

DirectoryIndex main.html index.html

こうすると、https://example.com/ にアクセスしただけで、自動的に main.html が表示されるようになります。

安全のための「403 Forbidden」

もし、フォルダの中に index と名の付くファイルが一つもなかったらどうなるでしょうか?

最近の安全なサーバー設定では、「403 Forbidden(閲覧禁止)」というエラーが出ます。

「見せるべき看板ファイル(index)がないので、勝手に中身を覗かせないよ!」という防衛本能です。

逆に、設定が古いままのサーバーだと、フォルダの中にあるファイルがリスト形式で丸見えになってしまうことがあります。

これはセキュリティ上非常に危険なため、現代のWebでは「必ず index ファイルを置く」ことが鉄則となっています。

結び:Webの「暗黙の了解」を楽しもう

URLから index.html が消える。

それは決して魔法ではなく、サーバーが私たちの代わりに「設定リスト」を高速で読み、最適なファイルを差し出してくれているからです。

index.php のような最新のプログラムから、index.htm という懐かしい歴史の断片まで、URLの末尾にはさまざまな物語が隠されています。

次にURLを見たとき、そこには書かれていない「省略された名前」を想像してみてください。

きっと、目に見えないWebの仕組みが少しだけ愛おしく感じられるはずです。

コラム:Web担当者が知っておくべき「SEOの罠」

ファイル名が省略できるからといって、example.com/example.com/index.html の両方のURLを広告やリンクに混ぜて使うのは避けましょう。

検索エンジンが「中身が同じなのにURLが2つある=重複コンテンツ」と判断し、サイトの評価を下げてしまう可能性があるからです。

基本的には「ファイル名なし」に統一するのが、現代のWebのスタンダードです。

目次