Go to information

MIMEタイプ・文字コードの指定

meta要素http-equiv属性では Content-Type, Content-Style-Type, Contet-Script-Type の各値を記述することで、それぞれウェブページ、スタイル言語、スクリプト言語の MIMEタイプ、及び文字コードを content属性で設定することができます。これらの設定はウェブブラウザや検索エンジンのロボットなどの UA が各情報を正しく認識するための指令ですが、meta要素による設定はあくまでも HTTPヘッダ(ファイルを読み込む際に UA とウェブサーバーの間で交わされるメッセージ)に対する追加的な情報でしかありません。また、XHTML1.1 では meta要素の http-equiv属性の指定は HTML互換のため、指定すること自体が推奨されていません。

ここでは meta要素の http-equiv属性を指定しなくても UA が情報を正しく解釈できるように HTTPヘッダ内に直接、ウェブページ、スタイル言語、スクリプト言語などの MIMEタイプや文字コードを明示する方法、さらに AddTypeディレクティブの設定を応用して、どの拡張子をどの MIMEタイプで提供するかを設定することで、特定の拡張子に関係なく SSIPHP などを利用できるようにする方法を解説します。

指定の拡張子に対する MIMEタイプの追加定義

AddType image/png png
AddType image/gif gif
AddType image/jpeg jpg jpeg

AddTypeディレクティブに続いて、MIMEタイプを指定し、半角スペースをあけて拡張子(extension)を記述することで、その拡張子(extension)に対する MIMEタイプを定義することができます。ここでは1行目は "png" を拡張子にもつファイルを "image/png" の MIMEタイプで提供し、2行目の指定は "gif" を拡張子にもつファイルを "image/gif" の MIMEタイプで提供し、3行目の指定は "jpg"、または "jpeg" を拡張子にもつファイルを "image/jpeg" の MIMEタイプで提供するよう HTTPヘッダに明示することで、UA がウェブサーバーへファイルをリクエストした際にそのように働きかけます。MIMEタイプの指定に続く拡張子の指定は半角スペースを空けることで、複数記述することができます。また拡張子には、わざわざドット(.)を前置する必要はありません(あってもなくても良い)。

MIMEタイプの追加定義にあわせて文字コードも指定

AddType "text/xml; charset=utf-8" xml rdf
AddType "text/html; charset=utf-8" html htm
AddType "text/plain; charset=Shift_JIS" txt

MIMEタイプの追加定義にあわせて、文字コードが関係するファイルについては文字コードを明示することができます。ウェブページ側の meta要素の http-equiv属性で文字コードの追加情報を示すことのできない XHTML1.1 においては特に有効な指定になります。ここでは、1行目の指定は "xml"、または "rdf" を拡張子にもつファイルはダブルクォーテーション(")で1つの値として括られている「"text/xml; charset=utf-8"」の部分は "text/xml" の MIMEタイプに "utf-8" の文字コードで提供する設定で、同じように2行目は "html"、または "htm" を拡張子にもつファイルを "text/html" の MIMEタイプに "utf-8" の文字コードで提供し、3行目は "txt" を拡張子にもつファイルを "text/plain" の MIMEタイプに "Shift_JIS" の文字コードで提供するように HTTPヘッダに明示しています。

SSI や PHP を拡張子に関わらず利用できように追加定義

ウェブサイトの作成を解説しているウェブページで「HTMLファイルの拡張子は htm、または htmlなければならない」や「CSSファイルの拡張子は cssなければならない」といった説明を良く見かけますが、正確にはこれらは間違いです。これはあくまでもウェブサーバー側の管理者が httpd.conf にデフォルトで MIMEタイプをその拡張子に対して提供するように設定しているためです。たとえば、次のように記述することで拡張子が "html" であっても SSIPHP といった技術を利用することができます。

拡張子に shtml または html をもつファイルで SSI を利用可能にする設定例
AddType text/x-server-parsed-html shtml html
拡張子に php または html をもつファイルで PHP を利用可能にする設定例
AddType application/x-httpd-php php html

このように、その拡張子をもつファイルをどの MIMEタイプで提供するかによって、たとえ "html" の拡張子であっても PHP を利用するために "php" に書き換えなければならないというわけではありません。このように MIMEタイプの設定を有効的に活用できれば、ウェブサイトの構築・管理においてとても便利なものとなり得ます。

まとめと AddTypeディレクティブの構文

AddType MIMEタイプ 拡張子
AddType "MIMEタイプ; charset=文字コード" 拡張子

AddTypeディレクティブに続いて、最初の値には MIMEタイプを記述します。そして、半角スペースを空けて、その MIMEタイプで提供するファイルの拡張子(extension)を指定します。拡張子の部分にあたる値の半角アルファベットは大文字・小文字の区別がなく(case-insensitive)、ドット(.)についてもあってもなくても構いません。さらに、文字コードが関係するファイルについては、あわせて提供する文字コードを設定できます。文字コードを設定する場合は、最初の値の部分をダブルクォーテーション(")で括り、まず MIMEタイプを記述してから、セミコロン(;)で区切って「charset=文字コード」の形式で文字コードを指定します。最後は、同様に半角スペースを空けて、その MIMEタイプで提供するファイルの拡張子(extension)を指定します。

DefaultTypeディレクティブと ForceTypeディレクティブ

AddTypeディレクティブと同じように、HTTPヘッダとしてウェブサーバーに対して、指定のファイルをどの MIMEタイプで提供するかを設定するディレクティブに DefaultTypeディレクティブと ForceTypeディレクティブがあります。ここでは、これらのディレクティブを付録として扱い、応用設定などの解説は省きます。まず、DefaultTypeディレクティブは拡張子がファイル名に含まれていない未知のファイルがあった場合、その未知のファイルを指定の MIMEタイプで提供するようにウェブサーバーに働きかける設定です。次に、ForceTypeディレクティブはそのディレクトリ以下にあるすべてのファイルが指定された MIMEタイプで提供するよう HTTPヘッダに明示することで、ウェブサーバーに働きかける設定です。どちらのディレクティブも活用方法は次のようになります。

/public_html .htaccess
DefaultType "text/html; charset=utf-8"
/public_html/style .htaccess
DefaultType "text/css; charset=Shift_JIS"
/public_html/gif .htaccess
ForceType image/gif
/public_html/png .htaccess
ForceType image/png

まず、1番目の設定は、/public_htmlディレクトリ以下のディレクトリに拡張子がファイル名に含まれていない未知のファイルがあった場合、"text/html" の MIMEタイプに "utf-8" の文字コードで提供し、2番目の設定は /public_html/styleディレクトリ以下のディレクトリに拡張子がファイル名に含まれていない未知のファイルがあった場合、"text/css" の MIMEタイプに "Shift_JIS" の文字コードで提供し、3番目の設定は /public_html/gifディレクトリ以下にあるすべてのファイルを "image/gif" の MIMEタイプで提供し、4番目の設定は /public_html/pngディレクトリ以下にあるすべてのファイルを "image/png" の MIMEタイプで提供しするようにウェブサーバーに働きかけます。

DefaultTypeディレクティブは拡張子がファイル名に含まれていない未知のファイルのみに働きかけますが、ForceTypeディレクティブはそのディレクトリおよびサブディレクトリにあるファイルの MIMEタイプを統一して提供するように働きかけます。たとえば、/public_html/styleディレクトリ以下のディレクトリには、いろいろなファイルがある中で、CSS を記述している拡張子をもたないファイルが多い場合に適しています。また、/public_html/gifディレクトリ以下のディレクトリが GIF 形式の画像のファイル専用のディレクトリであれば、すべてのファイルに拡張子 "gif" をつけて終わらせたくはない場合に上記のように設定するのが適しています。DefaultTypeディレクティブと ForceTypeディレクティブの使い分けは、この通りですが、ForceTypeディレクティブは DefaultTypeディレクティブと違って、未知のファイルだけでなく、設定された MIMEタイプで提供することが決められている拡張子をもつファイルも含めすべての MIMEタイプの関連付けを上書きすることに注意してください。

現在位置
  1. W3G
  2. Others
  3. .htaccess
  4. MIMEタイプ・文字コードの指定
ナビゲーション
ステータス情報
作者
上田 遼
公開
2006-05-02T23:25:14+09:00
更新
2008-12-29T04:19:16+09:00
URI
http://w3g.jp/others/htaccess/mimetypes
検索