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タイプで提供するかを設定することで、特定の拡張子に関係なく SSI や PHP などを利用できるようにする方法を解説します。
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タイプの指定に続く拡張子の指定は半角スペースを空けることで、複数記述することができます。また拡張子には、わざわざドット(.
)を前置する必要はありません(あってもなくても良い)。
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ヘッダに明示しています。
ウェブサイトの作成を解説しているウェブページで「HTMLファイルの拡張子は htm
、または html
でなければならない」や「CSSファイルの拡張子は css
でなければならない」といった説明を良く見かけますが、正確にはこれらは間違いです。これはあくまでもウェブサーバー側の管理者が httpd.conf にデフォルトで MIMEタイプをその拡張子に対して提供するように設定しているためです。たとえば、次のように記述することで拡張子が "html
" であっても SSI や PHP といった技術を利用することができます。
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 MIMEタイプ 拡張子 AddType "MIMEタイプ; charset=文字コード" 拡張子
AddType
ディレクティブに続いて、最初の値には MIMEタイプを記述します。そして、半角スペースを空けて、その MIMEタイプで提供するファイルの拡張子(extension)を指定します。拡張子の部分にあたる値の半角アルファベットは大文字・小文字の区別がなく(case-insensitive)、ドット(.
)についてもあってもなくても構いません。さらに、文字コードが関係するファイルについては、あわせて提供する文字コードを設定できます。文字コードを設定する場合は、最初の値の部分をダブルクォーテーション("
)で括り、まず MIMEタイプを記述してから、セミコロン(;
)で区切って「charset=文字コード
」の形式で文字コードを指定します。最後は、同様に半角スペースを空けて、その MIMEタイプで提供するファイルの拡張子(extension)を指定します。
AddType
ディレクティブと同じように、HTTPヘッダとしてウェブサーバーに対して、指定のファイルをどの MIMEタイプで提供するかを設定するディレクティブに DefaultType
ディレクティブと ForceType
ディレクティブがあります。ここでは、これらのディレクティブを付録として扱い、応用設定などの解説は省きます。まず、DefaultType
ディレクティブは拡張子がファイル名に含まれていない未知のファイルがあった場合、その未知のファイルを指定の MIMEタイプで提供するようにウェブサーバーに働きかける設定です。次に、ForceType
ディレクティブはそのディレクトリ以下にあるすべてのファイルが指定された MIMEタイプで提供するよう HTTPヘッダに明示することで、ウェブサーバーに働きかける設定です。どちらのディレクティブも活用方法は次のようになります。
DefaultType "text/html; charset=utf-8"
DefaultType "text/css; charset=Shift_JIS"
ForceType image/gif
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タイプの関連付けを上書きすることに注意してください。