ファイル名の最後のドット(.)から後ろの部分を『拡張子』と呼びます。index.html の拡張子は .html で、title.gif の拡張子は .gif です。拡張子はそのファイルが何であるかを示します。例えば、.html はHTML文書、.txt はテキスト文書、.gif は GIF画像、.jpg は JPEG画像のファイルであることを示しています。
Windows では、標準の設定では拡張子は表示されません。[スタート]-[(すべての)プログラム]-[アクセサリ]-[エクスプローラ] を起動し、[ツール]メニューの [フォルダオプション]-[表示] で、[登録されている拡張子は表示しない] のチェックをオフにしてください。
また、Windows では、ファイルをダブルクリックした時の動作はこの拡張子によって決まります。例えば .txt のファイルをダブルクリックすると [メモ帳] が起動します。どの拡張子にどんな動作が割り当てられているかは、エクスプローラの [ツール]-[フォルダオプション]-[ファイルの種類] で確認することができます。
Webの世界では拡張子という概念と、もうひとつ『MIMEタイプ』という概念があります。MIMEタイプとは「タイプ名/サブタイプ名」の形式の文字列で、WEBサーバーとWEBブラウザの間はこのMIMEタイプを用いてデータの形式を指定しています。例えばMIMEタイプには以下のようなものがあります。
ファイル形式 | 一般的な拡張子 | MIMEタイプ |
---|---|---|
テキスト | .txt | text/plain |
HTML文書 | .htm .html | text/html |
XML文書 | .xml | text/xml |
JavaScript | .js | text/javascript |
VBScript | .vbs | text/vbscript |
CSS | .css | text/css |
GIF画像 | .gif | image/gif |
JPEG画像 | .jpg .jpeg | image/jpeg |
PNG画像 | .png | image/png |
CGIスクリプト | .cgi | application/x-httpd-cgi |
Word文書 | .doc | application/msword |
PDF文書 | application/pdf |
x- で始まる名前は、まだ標準化されていない仮の名前です。標準化された名前の一覧は下記にあります。
ブラウザが xx.gif というファイルをWEBサーバーに要求する際、WEBサーバーはxx.gifの内容(データ)を「これは image/gif タイプのデータです」と言いながら返却してくれます。これにより、ブラウザは受け取ったデータを正常に処理することができるのです。
しかし、Internet Explorer などのブラウザでは、この MIMEタイプの情報を無視して拡張子の方を信用したり、MIMEタイプや拡張子を無視してファイルの中身を見て「text/plain と言っているけど、これは HTML文書みたいだから、HTMLとして表示してあげるね」と、いらぬお節介をするブラウザもあり、なかなか、期待通りには制御できないのが実状のようです。
WEBサーバーによって設定方法は異なるのですが、現在最もよく使用されている Apache というWEBサーバーでは、.htaccess というファイルによってMIMEタイプを指定します。データ(xxx.htmlなど)と同じディレクトリ(フォルダ)に .htaccess という名前のファイルを用意して、その中身を
AddType text/html .html
としておけば、WEBサーバーは、「.html という拡張子のファイルは text/html というMIMEタイプのデータとして送信する」という処理を行ってくれます。.html や .gif などに関してはプロバイダ側がすでにこの設定を行ってくれているのでわざわざ追加する必要はありませんが、CGIを設置したり、RealAudioなどのちょっと特殊なファイルを設置する際には、.htaccess による設定が必要です。
HTML文書の拡張子は .html だったり .htm だったりします。元々は .html だったのですが、マイクロソフト社の古いOS(MS-DOS や Windows 3.1)では、拡張子を3文字までしか扱えなかったため、.html を .htm、.jpeg を .jpg と記述していました。そのため、.html と .htm が存在しています。
現在でもまだ3文字の拡張子しか扱えないソフトが残っていたり、マイクロソフトが .html よりも .htm の方を標準的に使用しようとしていたりして、現在は .html と .htm が混在した状態になっています。
.html と .htm は、基本的にはどちらでも構いませんが、プロバイダによっては片方しか使用できないところがあります。
.shtmlという拡張子を時たま見かけますが、これは、SSIを含んだHTML文書によく使用されます。SSIを実行するには、WEBサーバがHTML文書内をすべて解釈しなくてはならないので、「.html や .htm はSSI解釈しない、.shtml のみをSSI解釈する」と設定することにより、WEBサーバーの負荷を緩和しています。