ApacheによるIE8対策

さて、いよいよWindows7のリリースとなりましたが、
Web業界に携わっている人間としてはIE8対応が気になるところです。

これまでのIEでは、CSSの解釈がW3Cのソレとは差異があったため
専用に対策を施すハメになることが往々にしてありました。
IE8では、レンダリング機能が改善され「CSS 2.1準拠」となった事で
これまでのIE対策があだになる可能性があります。

マイクロソフトの対応

このレンダリングの変更に伴いIE8では「互換表示」機能により
IE5/IE7/IE8のそれぞれのバージョンのレンダリングを表現します。

なお、このレンダリングモードは、「X-UA-Compatible」ヘッダー
によって指定することが可能です。

モード名称 X-UA-Compatible値 機能
IE5 モード IE=IE5 IE5モードで表示
IE7 モード IE=IE7 IE7モードで表示
IE8 モード IE=IE8 IE8モードで表示
edge モード IE=edge 使用可能な最高のモードで表示
IE7 エミュレートモード IE=EmulateIE7 を使用してレンダリング方法を決定
IE8 エミュレートモード IE=EmulateIE8 を使用してレンダリング方法を決定
詳細:http://msdn.microsoft.com/ja-jp/library/cc288325%28VS.85%29.aspx

Apacheによる対策の実施

さて、「X-UA-Compatible」ヘッダーの設定方法ですが、
タグを使用してHTML上で対応することも可能です。

<head>
<!-- Mimic Internet Explorer 7 -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title>My Web Page</title>
</head>
が、既存のWebサービスの対応を考えるとこの方法では無理があります。

そこで、WebサーバをApacheで運用している場合は下記の設定を
httpd.confに追記することで、Webサーバが自動的にヘッダーを
追加してくれます。

ローダブルモジュールを有効にする
LoadModule headers_module modules/mod_headers.so

追加ヘッダーを登録する
Header set X-UA-Compatible "IE=EmulateIE7"
※ここでは、例として"IE=EmulateIE7"としています。

なお、対象ディレクトリのみという場合は、Locationで指定可能です。

Header set X-UA-Compatible “IE=EmulateIE7”

以上