質問: 宜しくお願い致します。 下記のような会社のサイトを見ています。 https://www.tempstaff.co.jp/staff/ 開発者ツールで見ていて、staffフォルダの中に(index)というファイル?(ページ?) があるのですが、この(index)というページはどのようなページなのでしょうか? たぶんかなり初歩的な事なのかもしれませんが、分かるかたいましたら すみませんが教えてください。 宜しくお願い致します。
回答: 単純なWebサーバーはサーバー上のあるディレクトリをドキュメントルートとして、URLで指定されたパスのファイルを表示します。例えば、`/var/www/html`をドキュメントルートとし、`http://サーバー名/hoge/fuga.html`とアクセスした場合、`/var/www/html/hoge/fuga.html`のファイルを表示します(単純なアクセス以外に、エイリアスを設定したり、mod_rewriteで書き換えたり、CGIやPHP呼出しになったり、といった別のファイルや別の動作をさせることができます)。では、そのパスがファイルではなくディレクトリの場合の場合はどうなるでしょう。`http://サーバー名/hoge`や`http://サーバー名/hoge/`とアクセスした場合、もっというと`http://サーバー名/`とルートにアクセスした場合です。 `/var/www/html`や`/var/www/html/hoge`はディレクトリです。ディレクトリはファイルのように単純に中身を表示と言うことができません。そのため、Webサーバー上のHTTPサーバーソフトウェアではディレクトリアクセスの場合にどのような動作をするのかと言うことが設定されています。広く使われているApache HTTP Serverでは次のようになっています。 1. パスの対象がディレクトリであるがURLのパスが"/"で終わってない場合は、"/"を付けたURLへリダイレクトする。(DirectorySlash デフォルト`On`) 2. そのディレクトリに特定ファイル名のファイルがあれば、それを表示する。複数指定可能で、その場合は順番に探し、最初に見つかった物を探す。なお、それがCGIやPHPであった場合は、CGIやPHPとして動作する。(DirectoryIndex デフォルト`index.html`) 3. 特定ファイル名のファイルがなく、かつ、ディレクトリ内容の一覧表示が許可されている場合は、指定されたフォーマットでディレクトリ内容の一覧を表示する。(Optionsで`Indexes`を設定。デフォルトでは有効だが、インストール直後の設定ファイルでは無効にされている場合が多く、ほとんどのサーバーでは無効に設定している。表示のフォーマットはmod_autoindexを使って設定する) 4. 特定ファイル名のファイルがなく、かつ、ディレクトリ内容の一覧表示が許可されていない場合は、アクセス不可として403 Forbiddenを表示する。 index.htmlは上記の2番目の動作で出てきます。この仕組みにより、末が"/"で終わるようなディレクトリアクセスは単にindex.htmlを表示することが多いと言うことです。 注意して欲しいのは、index.htmlを表示するのは、HTTPサーバーソフトウェアの設定に過ぎないということです。標準規格として決まられたわけではありません。サーバーによっては、index.htmやindex.cgi、index.phpも指定している場合もありますし、全く別のファイルをしている場合もあります。また、設定方法やデフォルトのファイル名もソフトウェアによって異なります。たとえば、nginxではindexで指定してデフォルトは同じく`index.html`のみですが、IISではで指定してデフォルトに`Default.htm`等が追加されています(MSのドキュメントでは`Index.html`となっていますが、Windowsでは大文字小文字を無視されるため、`index.html`も対象に含まれます)。これらの設定は自由に変えることができ、また、特定のディレクトリのみ異なる物に変更と言うこともできます。ですので、"/"で終わるディレクトリアクセスがindex.htmlを表示しているとは限りません。 インターネット黎明期にWebサーバーを作る場合はApache HTTP Serverを使うことがデファクトスタンダードであり、その標準がindex.htmlであったため、index.htmlがデファクトスタンダードして使われるようになりました。設定で簡単に変更できますので、別にindex.htmlという名前でなければならないという決まり事はありません。ただ、理由もなく異なる物にした場合、混乱の元になりやすいので、ディレクトリアクスにはindex.htmlを使った方が良いでしょう。