携帯電話ページでのContent-Type

携帯電話でXHTMLを使用する場合にはまったこと。


HTMLファイルには以下のように設定
index.html

<?xml version="1.0" encoding="SJIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
  <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=SJIS" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <title>title</title>
</head>
<body style="background-color: red;color:blue;">
Hellow World!!
</body>
</html>

この状態で表示したが、携帯電話でスタイルが適用されない。


スタイルが適用されているサイトと見比べた結果、適用されているサイトのレスポンスヘッダーのContent-Typeはapplication/xhtml+xml、自分のレスポンスヘッダーのContent-Typeはtext/htmlとなっていた。


よってApache HTTPDAddTypeディレクティブ を追加

AddType application/xhtml+xml .html


特定のディレクトリ以下に設定する場合

<Directory "/usr/local/apache2/htdocs/mobile">
  AddType application/xhtml+xml .html
</Directory>


これでスタイルが適用されたHTMLが表示された。


AddTypeディレクティブはmod_mimeモジュールに含まれている。
以下のコマンドでmod_mimeが含まれているか確認できる。

/usr/local/apache2/bin/httpd -l | grep mod_mime
  mod_mime.c

mod_mime.cが表示されればAddTypeディレクティブを使用できる。