$ha = explode(",", $_SERVER["HTTP_ACCEPT"]);
if (in_array("application/xhtml+xml", $ha)) {
header("Content-Type: application/xhtml+xml; charset=UTF-8");
} else {
header("Content-Type: text/html; charset=UTF-8");
}
PHPでUAがくれる情報を元に判断してみる。IE6は*/*なのでfnmatch()
を使わない単純な比較なら逆に何にも一致しません。Mozilla1.6bのHTTPリクエストヘッダにはapplication/xhtml+xmlがあるので一致します。
コンテントネゴシエーションといってもこのサイト内だと送られてくるファイル自体はほぼ同じなのでほとんど意味が無いのですが……。
HTML文章内のmeta
要素で指定しているContent-Typeの変更も忘れずに。
HTML文章内のmeta
要素が必要となった経緯を考えるならばHTTPレスポンスヘッダでContent-type: application/xhtml+xml; charset=UTF-8
を送信しておけばHTML文章内のmeta
要素は必要ない。HTTPサーバのための救済処置であったmeta
要素はPHPで適当なContent-typeを出力している時点で役目を終えていると言える。