デジタル考古学プロジェクトで、2001年以降のファイルを持つWebサーバーディレクトリを見つけました。このファイルには、異なる言語と言語文字セットの2つの文字コードで終わる名前を持つindex.html
ファイルの独特のコレクションがありました。
index.html.ca index.html.ja.jis index.html.ru.iso-ru
index.html.cz index.html.kr.iso-kr index.html.ru.koi8-r
index.html.de index.html.lb.utf8 index.html.ru.ucs2
index.html.dk index.html.nl index.html.ru.ucs4
index.html.ee index.html.nn index.html.ru.utf8
...
Accept-Language
ヘッダーの値に基づいて異なる静的ページを提供するように最新のApacheを構成するにはどうすればよいですか?
これらのファイルは、ほぼ確実に Apacheコンテンツネゴシエーション で提供されることを意図しています。明示的な型マップとして機能する.var
ファイルは存在しないようであり、ファイル名の拡張子は標準の言語および文字セットコードに対応しているため、おそらく暗黙的な MultiViews メカニズム。
これらのファイルを含むディレクトリに対してMultiViewsを有効にするには、そのディレクトリの.htaccessファイル(またはグローバルApache構成の対応する<Directory>セクション)に次のディレクティブを追加します。
Options +MultiViews
これにより、HTTP Accept
、Accept-Charset
およびAccept-Language
ヘッダーで示される言語、MIMEタイプ、および文字セット設定に基づいて追加の拡張子を追加することにより、Apacheが存在しないファイルの要求を自動的に解決します。たとえば、index.html
のリクエストにより、Apacheはユーザーの設定言語に応じてindex.html.de
またはindex.html.ja.jis
またはindex.html.ru.utf8
のコンテンツを代わりに返す可能性がありますブラウザ。
コンテンツネゴシエーションに加えて、ユーザーが好みのページのバージョンを明示的に選択する方法も提供する必要があることに注意してください。 MultiViewsを使用する場合、これは、言語コードを含む翻訳済みページへの直接リンクを提供するのと同じくらい簡単です。
検索エンジンが各言語の一意のURLを表示できるように、リダイレクトを発行することをお勧めします。 。htaccessファイルで使用できる書き換えルールを次に示します。
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^index.html$ /index.html.de [L,R=302]
RewriteCond %{HTTP:Accept-Language} ^ru [NC]
RewriteRule ^index.html$ /index.html.ru.utf8 [L,R=302]
...
NC
は「大文字と小文字を区別しない」(大文字と小文字を区別しない)L
は「last」です(他のルールの処理を停止します)R=302
は一時的なリダイレクトです認識された値でヘッダーを送信しないブラウザには、デフォルトのindex.html
が引き続き必要です。