2009年12月10日木曜日

.htaccessでContent-typeとしてapplication/xhtml+xmlを振り分ける方法とか。

まず、第一に気にすべきはapplication/xhtml+xmltext/htmlをブラウザのUAで判断するべからずだと思います。

何故ならばブラウザを全て把握する必要があり、また、新たなブラウザが発生した場合に対処するのが面倒だからです。これはJavaScriptで対応していないメソッドがあってもUAで判断してしまった為に対応後に面倒な修正が入るのと同様の理由です。

というわけでうち[juner.net]ではUAを見ないで行う判別方法を.htaccessで分岐させていますが、それは以下の様な物になります。

AddType "text/html;charset=utf-8" .html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteCond %{LA-F:REQUEST_FILENAME} \.html
RewriteRule .* - "[T=application/xhtml+xml]"
</IfModule>

これで、ブラウザが対応していなければtext/htmlを、対応しているならばapplication/xhtml+xmlを返すという事が可能となります。

まぁmod_rewrite.cが用意されていれば……の話ではありますけれどね。

尚、うちの場合、htmlは対応状況によって振り分けますが、.htmはtext/htmlを、.xhtmlはapplication/xhtml+xmlを返す様な設定にしてあります。