PHPでコンテントネゴシエーション

ページ情報
制作日
2003-12-26
最終更新日
2004-02-05
参照用URI
http://www.arielworks.net/articles/2003/1226c
分野
$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を出力している時点で役目を終えていると言える。

関連記事

連絡先、リンク、転載や複製などについては「サイト案内」をご覧ください。Powered by HIMMEL