以前にもIEでうちのWebサイトが見られない現象について言及したことがあったけれど、
今回もう少しスマートなApacheの設定方法があったから、書いておく。
デフォルトでtext/htmlを出すようにしておいて、ブラウザがapplication/xhtml+xmlを受け付けるなら、
そっちを出力という設定をしている人の話はいくつか見つかるけれど、
こっちのパターンでやっている人はあまりいなかったので...。
ただし、これをやると別の問題が...
Movable TypeのPluginであるMTGoogleMapsを使おうとするとエラーが。
というのも、Google MapsではJavaScriptのdocument.writeを使うのだが、
これがXHTMLでは存在しておらず、
ブラウザもapplication/xhtml+xmlに対してはそのように挙動するということが原因。悔しいが放置。
このプラグイン、面白そうだから使いたいんだけどなぁ。
すべての結果から導かれる結論は“text/html”だが、
なにせ規格としてはapplication/xhtml+xmlが正しいという意識が
defaultの設定をtext/htmlにさせることをためらわせる。融通の利かない人間なのです。
戯言より設定を見たい人は続きを参照のこと。
一応解説。まず、ひと塊目。URLの末尾が/で終わる場合は/index.htmlにアクセスするようにrewrite。
通常はmod_dirというモジュールがディレクトリのアクセスに対して、規定のページを出力するが、
ここでは手動で、インデックスのページに書き換え。
幸い我がサーバーではこれ以外(index.phpとか)が出ると困るディレクトリが少ないので。
ふたつめ。
こっちはブラウザがapplication/xhtml+xmlを受け付けられると言っていない場合に、
URLの末尾が.htmlのアクセス要求があったら、コンテントタイプをtext/htmlにして出力するというもの。
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} !(Safari|Firefox|Opera)
RewriteCond %{REQUEST_FILENAME} ^.*/$
RewriteRule (.*) "$1index.html" "[T=text/html,R,L]"
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !(Safari|Firefox|Opera)
RewriteCond %{HTTP_ACCEPT} !application/xhtml+xml
RewriteCond %{REQUEST_URI} .html$
RewriteRule .* - "[T=text/html]"
コメント