MIMEタイプ設定の意味と利用例

レンタルサーバーで提供される機能のひとつに「MIME(マイム)タイプ設定」があります。ここではこの機能の意味と、実際にどのような場面で利用されるのかについて解説します。

最初に

詳しい説明に入る前にひとつだけ述べておくと、もしレンタルサーバーの利用がはじめてといった初心者の方であれば、基本的にMIMEタイプ設定については気にしなくて大丈夫です。

そもそもこの機能は、既存のサーバー設定だけでは対応できない特殊な用途について、ユーザー側で追加設定を行うためのものです。初心者のうちはそうした特殊な使い方をするケースはほとんどないので、無理してこのあとの解説すべてを理解する必要もありません。

MIMEタイプとはなにか

簡単な定義

MIMEタイプを簡潔に表すと、次のように言うことができます。

  • 特定の拡張子を持つファイルについて、それがどのような種類のファイルであるのかをサーバー側で定めたもの

とはいえ、この表現だけでは意味が分かりにくいので詳しく説明していきます。

拡張子.txtのファイルに対するブラウザの動作

たとえば数行の文章が書きこまれた「memo.txt」というテキストファイルがあり、これが(ウェブ)サーバー内に置かれていたとします。このとき、ブラウザでmemo.txtのURLにアクセスすると、そのテキストファイルの中身が表示されます。

通常はテキストファイルの中身が表示される

では、なぜブラウザはこうした動作(テキストファイルの中身を表示する)を行ったのでしょうか? それはサーバー側に下記のような設定があったからです。

  • .txtという拡張子を持つファイルは、プレーンなテキスト(text/plain)である

そしてブラウザはプレーン(ノーマル)なテキストはそのまま表示するという仕組みを持っています。そのためmemo.txtの中身がブラウザに表示されたわけです。

MIMEタイプを変えるとどうなるか

しかし、もしウェブサイトの管理人が「拡張子が.txtのファイルにアクセスがあった場合、ブラウザで中身を表示するのではなく、保存(ダウンロード)させたい」と考えたとします。

これを実現するためには、サーバー側の設定をたとえば下記のように書き換えます。

  • .txtという拡張子を持つファイルは、なんらかのデータ(application/octet-stream)である

ブラウザは対象がなんのファイルであるか特定できない場合にはダウンロードを行うという仕組みになっています。
そのため拡張子.txtを「なんらかのデータ(厳密には任意のバイナリデータ)」という不特定ファイルに指定すると、保存ダイアログが表示されるようになります。

MIMEタイプを変更すると保存ダイアログが表示される
※ブラウザの設定によってはダイアログが表示されずにいきなりダウンロードが始まる場合があります。またIEではMIMEタイプが無視される場合があるため、この通りの挙動にならないことがあります。

ここで最初の定義に戻りますが、この「特定の拡張子を持つファイルについて、それがどのような種類のファイルであるのかをサーバー側で定めたもの」がMIMEタイプになります。

MIMEタイプの設定方法

設定ファイルについて

実際にMIMEタイプを設定する場合、一般的なレンタルサーバー(共用サーバー)では「.htaccess」というファイルを編集することになります。

じつは「mime.types」という名前そのままの設定ファイルもあるのですが、これはサーバー管理者が全ユーザーに対しての共通設定を行うためのものです。たとえば前述した「.txt」をはじめとして、画像やHTMLファイルなどの代表的な拡張子は、レンタルサーバー側で事前にここで設定されています。

しかし、ときにはそうした共通設定だけでは対応できないケースがあります。このような場合には、各ユーザーは.htaccessというファイルを追加・編集することで任意のMIMEタイプを設定できます。.htaccessはそのファイルが置かれたディレクトリ以下にしか効力を及ぼさないので、他ユーザーに影響が及ぶことはありません。
※なおレンタルサーバーによっては.htaccessの追加・編集を許可していない場合が稀にありますのでご注意ください。

なおエックスサーバーなど一部のサービスについては、管理画面(コントロールパネル)内からもMIMEタイプの追加・削除ができます。ただし、ここから設定しても結局は.htaccessに追記されています。

MIMEタイプの記述方法

MIMEタイプの設定(記述)方法は、下記のように定められています。

  • AddType ファイルの大分類/ファイルの細分類 拡張子

具体例を出すと、.txtをプレーンなテキストとして定めている場合は以下のようになります。

  • AddType text/plain .txt

なおこの大分類と細分類で表されるMIMEタイプ名(メディアタイプ)については様々なものがあります。利用の際には下記のようなサイトで確認してください。

・Media Types – IANA

実際の利用例

途中でも述べたように、代表的な拡張子についてはすでにサーバー管理者側で設定されています。そのため一般的なファイルを用いてウェブサイトを運営する際にはMIMEタイプ設定を意識する必要はほとんどありません。
しかしながら、特殊な用途では設定が必要な場合があります。幾つか実際の利用例をご紹介してみます。

SVG画像の表示

近年少しずつ普及が進んでいる画像ファイル形式としてSVGがあります。このSVGはピクセル単位で画像を表現していた従来の形式とは異なり、どれだけ画像を拡大・縮小しても劣化することがないベクタ形式になっています。

しかしまだ十分に普及していない形式のため、レンタルサーバー側ではSVG画像のMIMEタイプを設定していない場合があります。その際にはユーザー自身で下記のように設定する必要があります。

  • AddType image/svg+xml .svg
  • AddType image/svg+xml .svgz

Webフォントの利用

また従来はウェブサイト上で特定のフォントを指定したいと思っても、そのフォントが閲覧者側のパソコンに入っていないと正常に表示できませんでした。しかし最近では、サーバー側にフォントファイルを置いておき、それを読み込ませることでどの環境でも共通のフォント表示を実現する「Webフォント」の利用も増えてきました。

このときフォントファイルの拡張子についてもMIMEタイプを設定することになります。なおWebフォント利用時の設定については下記の記事が参考になります。

・CSS3 Web Fontを使用する際のMIMEタイプ設定 – ENTEREAL

その他(過去の利用例)

そのほか以前は.htm/.htmlの拡張子のファイルでPHPプログラムを動かしたり、同じく.htm/.htmlのままでSSIと呼ばれる動的処理を行わせたりなどといったケースでも、MIMEタイプが用いられることがありました。

しかし現在ではこうした場合にMIMEタイプ設定を行うのは非推奨となり、ハンドラを用いた指定(AddHandler)が一般的になっています。