ApacheのMultiviewsで、htmlを多言語対応
index.html.jaとindex.html.enの2ファイルを置いて、日本語版と英語版をApacheまかせで切り換える……ってのは時々見かけていたけど、自分でやろうとしてみたのでちょっとメモ。
導入準備
hoge.htmlをリクエストされたら言語判断をしてhoge.html.ja(もしくはhoge.html.en)を返す、というのはApacheのコンテントネゴシエーション機能のMutiviewsを利用している。というわけでまずはApacheの設定(httpd.confもしくは.htaccess)で、
Options Multiviews
を有効にする。
しかしこのMultiviewsは副作用も大きいので、単にちょっと言語切り換えたい〜ってライトな理由だけで導入するのはあんまりお勧めできない。本来404 Not Foundになるべきものがならないため、思わぬ弊害をもたらすことがある。(副作用が大きいからこそ、"Options All"しても「MultiViews を除いた全ての機能が有効となります。」となっているんだな……)
でも、最近の「クールなURLを!」というノリに従って、導入しているところは多そうだ。
Multiviewsで多言語対応
Multiviewsが効くようになったら、あとは該当のディレクトリに.htaccessファイルを設置して、
AddLanguage ja .ja AddLanguage en .en
とりあえずこれで2言語対応。hoge.htmlと叩かれたら、自動的にブラウザのAccept-Languageヘッダを判断して適切なものを返してくれる。すなわち、日本語ならhoge.html.ja、英語ならhoge.html.en。
またMultiviewsはDirectoryIndexにも効くので、例えばindex.php.jaとindex.php.enを用意しておけばよろしくやってくれる。