ホスティングのサーバーと校内のサーバーは両者とも、ファイルの拡張子によりサーバーが付加している。Firefoxのアドオンと、後述のサーバー設定ファイルなどで確認した。
ファイルの 拡張子 |
サーバーから 返されたContent-type (meta http-equiv の記述によらない) |
html | text/html |
xhtml | application/xhtml+xml |
なし | text/plain |
IE6は、<!DocType が冒頭にないと互換モードという不適切な設計なので、<?xml があると必ず互換モードになる。
要するにUTF-8でエンコードされている場合は,拡張子が html で、<meta の記述があるときだけ type の指定に関わりなく正常に表示される。
ただし,Shift-JISであれば<meta の記述がなくても大丈夫だと思う。
ファイルの 拡張子 |
サーバーから 返された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 が働くとあるので拡張子がない時にしか役に立たない。
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