QA@IT

多言語サイト作成時の複数のURLを各言語圏で使い分ける方法について(geolocation設定)

12528 PV

どうかご教示願います。

現在、多言語のサイトを日本語(xxx.com)、英語(xxx.com/e.php)、スペイン語(xxx.com/s.php)で作成しております。サイトの名称自体をサイトの日本語のurl(xxx.com)と同じに致しました(日本の場合、サイト名からurlを連想してurl窓に打ち込んでサイトを表示できるように)。このような場合、海外の英語圏の国でurl窓にxxx.comと打ち込んだ時にxxx.com/e.phpへリダイレクトし、スペイン語圏の国でurl窓にxxx.comと打ち込んだ時にxxx.com/s.phpへリダイレクトし、それぞれ作成した英語サイト、スペイン語サイトを表示するような設定にすることはできますでしょうか。

  • php と書いてあるということは、LAMP もしくはそれに準じた環境に限った場合の話ですよね? -

回答

Otn様
大変貴重な情報をご教示頂きまして感謝いたします。
仰るとおりで、(xxx.com)を開こうとした時に、ユーザーの使うブラウザが英語であれば、英語ページ(/e.php)に、スペイン語であればスペイン語(/s.php)ページに(xxx.com)からリダイレクトするのが期待する動きでございます。

そこでご教示頂きましたように試しておりまして、以下のサイトが最もシンプルでしたので、

http://balunsoftware.jp/info/2011/04/language-switch/

以下の様に試しました。

ルートディレクトリの .htaccess ファイルでの mod_rewrite の設定で、

# en = English
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ /e.php/
# es = Spanish
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ /s.php/
# else = Japanese
RewriteRule ^$ /index.php/

これで宜しいと思われますでしょうか。またテストをどのようにすればよろしいか何かアドバイスがありましたらご教示のほどよろしくお願いいたします。
webサーバーはApache/2.2.3 (CentOS)です。

編集 履歴 (8)
  • 不適切な投稿のため削除しました。 -
  • 不適切な投稿のため削除しました。 -

IPアドレスだと、例えば英国に住んでいる日本語話者などに対応できません。
ブラウザには、からなず言語設定がありますので、それを使うのが良いかと思います。
( Accept-Languageヘッダ )

静的なページであれば、Apacheのコンテントネゴシエーション機能を使えば、同一URLで言語ごとに異なるページを出すことが出来ます。
http://httpd.apache.org/docs/2.4/ja/content-negotiation.html
例えば index.html.varファイルに言語による振り分けを記述します。

動的なページであれば、プログラム中で、Accept-Languageヘッダを見て生成するページを変更します。

編集 履歴 (0)

お世話になっております。またお時間を頂きまして感謝致します。

当サイトでも解説されているジオロケーション 'http://www.atmarkit.co.jp/ait/articles/1107/14/news119.html'
という設定を利用し、サイトにアクセスされたipアドレスから国コードを特定し、その国コードであれば英語サイトの(xxx.com/e.php)を表示するといったような設定になるかと考えております。
 
詳しい設定方法などのご教示頂けませんでしょうか。

編集 履歴 (3)
  • 自分はリクエスト情報に含まれる Accept-Language ヘッダの内容から判断するぐらいの話しか知りません。お役に立てずすみませんが、他の回答者の回答をお待ちください。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。