総目次へ top

meta http-equiv の記述

調査結果

Content-type

ホスティングのサーバーと校内のサーバーは両者とも、ファイルの拡張子によりサーバーが付加している。Firefoxのアドオンと、後述のサーバー設定ファイルなどで確認した。

ファイルの
拡張子
サーバーから
返されたContent-type
(meta http-equiv の記述によらない)
html text/html
xhtml application/xhtml+xml
なし text/plain

IEの振る舞い

IE6は、<!DocType が冒頭にないと互換モードという不適切な設計なので、<?xml があると必ず互換モードになる。

要するにUTF-8でエンコードされている場合は,拡張子が html で、<meta の記述があるときだけ type の指定に関わりなく正常に表示される。

ただし,Shift-JISであれば<meta の記述がなくても大丈夫だと思う。

IE ver6.02 の場合
ファイルの
拡張子
サーバーから
返されたContent-type
(meta http-equiv の記述によらない)
meta http-equiv の記述と IE 6.02の表示 Firefox 3.06 の表示
なし app/xhtml+xml app/xml text/html 共通
html text/html 空白ページ
xhtml application/xhtml+xml ダウンロード ダウンロード ダウンロード ダウンロード
なし text/plain エラー エラー エラー エラー テキスト

IE7でも同様の結果である。

解説

ファイルの拡張子によりサーバーが付加

joshua の apache の設定ファイルによると、/etc/mime.types できまり、デフォルトは text/plain であるということになっている

( /etc/apache2/apache2.conf )

TypesConfig /etc/mime.types
DefaultType text/plain

mime.types はtypeと拡張子を対応づけるファイルで、次のようになっている。

joshua:~# cat /etc/mime.types |grep html
application/xhtml+xml                           xhtml xht
application/vnd.pwg-xhtml-print+xml
application/x-httpd-eruby                       rhtml
application/x-httpd-php                         phtml pht php
text/html                                       html htm shtml
text/x-server-parsed-html

joshua:~# cat /etc/mime.types |grep 'text/plain'
text/plain                                      asc txt text pot

拡張子がないと判断できないので、デフォルトにするのだろう。

この mime.type は apache のモジュールで本体はmods-availableにあるが,設定ファイルは/etc/mime.type。この他にもモジュールとしてmime_magicがある。

joshua:~# ll /etc/apache2/mods-available/ |grep mime
-rw-r--r-- 1 root root   60 Mar 27  2007 mime.load
-rw-r--r-- 1 root root   89 Mar 27  2007 mime_magic.conf
-rw-r--r-- 1 root root   72 Mar 27  2007 mime_magic.load

しかしモジュールの組み込みはmods-enabledで設定する。以下で組み込まれているのがわかる。

joshua:~# ll /etc/apache2/mods-enabled/ |grep mime
lrwxrwxrwx 1 root root 27 Jun  3  2007 mime.load -> ../mods-available/mime.load

mime.magic はファイルの最初の何文字かで判断する、というモジュールであるが、上記でわかるように mods-enabled に書かれていないので、有効になっていない。

やはりパフォーマンスの問題だろう。

しかし、有効にしたとしてもマニュアルによると mime.type で解決できない時に mime.magic が働くとあるので拡張子がない時にしか役に立たない。

実際の画面のスクリーンショット

IE ver6.02 の場合
ファイルの
拡張子
サーバーから
返されたContent-type
(meta http-equiv の記述によらない)
meta http-equiv の記述と IE 6.02の表示 Firefox 3.06 の表示
なし app/xhtml+xml app/xml text/html 共通
html text/html meta http-equiv なし application/xhtml+xml application/xml text/html firefox
xhtml application/xhtml+xml meta http-equiv なし application/xhtml+xml application/xml text/html
なし text/plain meta http-equiv なし application/xhtml+xml application/xml text/html firefox

結論

xmlのヘッダにエンコードの記述があり,本来不要なはずの <meta http-equiv の記述であるが,UTF-8で記述され,インターネットに公開しIE6,IE7で閲覧されることを想定する以上,書かないわけにはいかない。

xml文書ではapplication/xhtml+xmlにすべきといわれているが,サーバーからのHTTP Content-Type ヘッダーがこれであると,IE6,IE7はダウンロードとなってしまう。

サーバー側では拡張子が.htmlならば"text/html"としているようだ。これをapplication/xhtml+xmlにするには,拡張子を.xhtmlにするか.htaccessに記述をするかであるがIE6,IE7で閲覧されることを想定する以上はこのままにするしかない。

したがって<meta http-equiv の記述に書くContent-Typeはサーバーにあわせて"text/html"としてもよいし,どうせ無視されるのであればローカルでxmlとして扱ってもらえることを期待して"application/xhtml+xml"と書いても問題はないだろう。

XHTML Media Types ― 第二版2009 年 1 月 16 日付 W3C ワーキンググループノート (Working Group Note)

XHTML Media Types - Second EditionW3C Working Group Note


Mar.2009
聖愛中学高等学校
http://www.seiai.ed.jp/
Nov.2010加筆