• 締切済み

サイトで閲覧者の使用言語に合わせページを飛ばしたい

自分のウェブサイトで、閲覧者の使用言語に合わせて自動的にページが飛ぶようにしたい はじめまして。独学で個人のウェブサイトを作ってるのですが、どうしてもわからないことがあります。 ウェブサイトを多言語化したいのですが、その言語が使われてる国に合わせてサイトのコンテンツやウェブデザインを変えるので、 サーチエンジンなどとの兼ね合いで混乱を防ぐためにも、サブディレクトリで違うURLにして管理する事にしました。 (例:日本語ページはhttp://www.●●●.com/ja、英語ページはhttp://www.●●●.com/en、といった具合です) つまり、ひとつひとつ言語別にページをつくり、別々でひとつひとつアップロードしていく感じです。 ですが、名刺など人に教える時にはサブディレクトリを省いたhttp://www.●●●.comで教えたいので、そのアドレスにどちらの言語の人が来ても、閲覧者にとってクリックする手間が省けるよう、コンピューターで日本語をお使いの方にはjaページ、その他の言語の方にはenページが最初に表示されるようにしたいのです。 (そして、英語ページなどをわざわざ見たいと思っている日本語閲覧者には、enページへのリンクを貼り誘導するようにしたい) ★イメージとしては、このサイトと似た仕様にしたいと思ってます http://www.astro.com/ (星座占いのサイトで、右上の言語ボタンをクリックすることで言語を切り替えられるのですが、アクセスをどの国からしているかによって自動的にどれかのページに飛ぶようになっているようです) ※希望としては、「アクセスしてる国に合わせる」のではなく、「アクセスしてるPCのメインで使用するのに設定されてる言語に合わせて」ページの切り替えが行えたらな・・・と思っているのですが、 上記の例のサイトと同じ仕様でもいいな、と、思ってます。 どうかお知恵をお貸し下さい。よろしくお願い致します。

みんなの回答

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.4

No3です。 >実はWordpressを使用してサイトを作りたいとおもっているのです なんか元の質問と全然関係ない話になっていますね。 >静的なHTMLページじゃなくて、プログラムでHTMLを生成する場合は、ブラウザからの > Accept-Language ヘッダを参照して出し分けてください。 と書いたとおりですが、自分で出来ないなら、PHPのカテゴリで、 「WordPressでブラウザの言語に合わせて出すページを変えたいのだが」と質問してください。

rukkora5
質問者

お礼

Wordpressを使用するか否かはあまり関係無いかなと思っていました。すいません!! ここで回答を頂いたり調べたりして色々とわかってきたので、 感謝しています。度々ご回答ありがとうございます!

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.3

Apacheだとそういう機能は標準で備わってます。 まず、言語はOSの設定と言うよりブラウザの設定で決まります。IEだとインターネットオプションの全般タブの言語のボタンで設定します。日本語Windowsだと標準でjaが登録されていると思いますが、ここでenを追加して、jaよりも上位にしておくと、英語のページを日本語より優先して表示して欲しいとサーバーに伝えることになります。IE以外のブラウザでも同様の設定が必ずあります。 自分で各国語の画面の確認をする場合も、ここをいろいろ変更しながら確認することになります。英語の画面を確認したいときはenだけを登録してjaを削除しておきます。 Apache側では、httpd.confで標準で、 AddHandler type-map var という行が有効になっているはずです。もしコメントになっていれば有効にしてください。 例えば、index.html をブラウザの言語に応じて、日本語:index.ja.html 英語:index.en.html 韓国語:index.ko.html などを出し分けたいとすると、index.html.var と言うファイルを作って、下記のように書きます。これはHTMLじゃないので、いきなり下記のように書いてください。 ======ここから===== URI: index.html URI: index.en.html Content-type: text/html Content-language: en URI: index.ja.html Content-type: text/html;charset=utf-8 Content-language: ja URI: index.ko.html Content-type: text/html;charset=utf-8 Content-language: ko =====ここまで===== この状態で、index.htmlを表示させるリクエストを送ると、言語に応じてファイルが選択されます。 もしindex.htmlファイルが存在すると(index.html.varが無視され)そちらが表示されます。 また、該当する言語が無いときは英語版が表示されるようです。 静的なHTMLページじゃなくて、プログラムでHTMLを生成する場合は、ブラウザからの Accept-Language ヘッダを参照して出し分けてください。

rukkora5
質問者

補足

すいません、教えて頂いた事を調べていてわかったのですが、 実はWordpressを使用してサイトを作りたいとおもっているのです その場合、index.htmlではなくindexphpになるようなのですが、 その部位を変えるだけで適用できるのでしょうか? WordpressにApacheをインストールするところから ほとんど宇宙語に近く、苦闘していますが なんとか勉強したいです (独学htmlとcssとちょっとjava scriptくらいしかやっとことがないです) ウェブサイトのデザインを日本語版と英語版で変えたいと考えてるので、 notnotさんの教えてくださっている二番目の方法が合う気がしているのですが、 Wordpressでやるとしたらやり方が変わってしまいますか? ちなみに、インストールして使う方のWordpressです

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.2

.htaccessを設定して、閲覧する言語ごとのサイトに ジャンプするようにするのが手軽と思います。 HTMLを編集する方法もありますが、修正に手間がかかりますので。 あとは、HTMLではくPHPを使いアクセスするブラウザの言語を取得し 初期の言語を表示をすると共に、言語を変更できるようにするのがいいでしょう。 また言語ごとにページを作るとメンテナンスに手間がかかるので 言語部分は別で管理するのがオススメです。 例えば下のようなサイトを参考にして下さい。  http://themuck.de/index.php?lang=ja このPHPシステムは公開されているので理解できれば簡単でしょう。

rukkora5
質問者

お礼

補足の補足です http://okwave.jp/qa/q7553544.html この方とおそらくやりたいことが似ているのですが Googleなど検索エンジンで混乱するのではと懸念してます

rukkora5
質問者

補足

例を添えての回答参考になります、ありがとうございます! 実は、言語も別にするのですが、デザインも別にしようと考えているのです .htaccessはよっぽどでない限り使わないほうがいいとどこかにあったような記憶があるのですが・・・ 聞きかじりで言ってすいません、だいじょうぶでしょうか? そして後出しなのですがWordpressを使ってサイトを作りたいと思っているのです。WordpressはPHPやApachをメインで使ってると思うので二番目の方法がうまい具合に適用できますでしょうか。

  • ballville
  • ベストアンサー率47% (233/487)
回答No.1

サーバー側で振り分けるより、ブラウザに言語を判定させ、該当ページに飛ばすほうが簡単な気がします。 var lang=window.navigator.userLanguage || window.navigator.language || window.navigator.browserLanguage; で使用言語が取得できます たとえば日本語だと、ブラウザによって"ja"だったり"ja-JP"だったりするので細かなチェックは必要ですが。

関連するQ&A

  • 静的サイト 多言語化 /ja /en について

    お世話になります。 現在、静的ホームページにて、多言語化の処理をしようとしております。 ルートディレクトリには、index.htmlを用意し、英語圏用のコンテンツとなっています。 その下の階層には、 /en と /ja というフォルダがあり、そこに、 /en → 英語圏用ページファイル一式 /ja → 日本語圏用ページファイル一式 が入っています。 今回、各閲覧者の言語環境にて、 上記ディレクトリのファイルを表示させることを検討しております。 ウェブ上で調べたところ、 .htaccess を使用することで、 index.html.ja index.html.en への 分岐ができることは、記載があったのですが、上記ディレクトリのような、分岐の方法については、 私の力不足か、情報を見つけることができませんでした。 なんとか、上記内容にて、ホームページを構築したく思っております。 何卒ご教示のほど、よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • PCサイトを国内閲覧拒否、モバイルのみ閲覧可能に

    日本以外の海外で言語別に振り分けるサイトの準備をしています。 ただ、モバイルのみ国内閲覧可能なサイトを準備したいと考えています。 今悩んでおりますのは、 1)htaccess等を利用してPCサイトの国内からのアクセスを拒否、海外アクセスのみの状態。 2)その状態で、同一ドメイン上のサブディレクトリにあるモバイルサイトのみ国内閲覧可能な状態 URLの例で言いますと http://www.○○○.com/ > 国内閲覧拒否(PCサイト) http://www.○○○.com/i/ > 国内閲覧可能(モバイル&スマホ) htaccessを調べてはいるのですが、はじめに国内閲覧拒否してしまっている状態で、サブディレクトリのモバイルには国内からは飛ばせないような気がするのですが。 記述などの助言をいただけると幸いです。 よろしくお願いします。

  • 多言語HPはドメイン分けるべきか

    独自ドメインABC.comを取得したとします 日本語、英語、中国語と3つの言語対応サイトを作る場合 1、サブドメイン作らない http://ABC.com/ja.html http://ABC.com/en.html http://ABC.com/ch.html 2、サブドメイン作る場合 http://ja.ABC.com/ http://en.ABC.com/ http://ch.ABC.com/ この2パターンが出来ると思うのですが 便宜上どちらがいいのでしょうか? それぞれのメリット、デメリットあれば教えてください サブドメインはいくらでも作れます

  • ブラウザの言語に合わせて表示ページを振り分けたい

    http://www.abc.ne.jp/ // 日本語サイトルート http://www.abc.ne.jp/en/ // 英語サイトルート という構成のサイトを海外から検索・閲覧する時にhttp://www.abc.ne.jp/en/の方を表示するように修正したいと考えています。 (1)ページランクは下げたくない http://www.abc.ne.jp/に下記のようなソースのindex.phpを置き、http://www.abc.ne.jp/jp/または http://www.abc.ne.jp/index_jp.phpを作成し日本語サイトトップページとする場合、index.phpがコンテンツのないリダイレクトするだけのファイルになってしまうため、SEO上好ましくないのではないかと考えています。 【ソース】 $languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); $languages = array_reverse($languages); foreach ($languages as $language) {  if (preg_match('/^ja/i', $language)) {   header("Location: http://www.abc.ne.jp/jp/");  } else {   header("Location: http://www.abc.ne.jp/en/");  } } (2)閲覧者の表示言語の選択肢は残したい 現状通りの構成でhttp://www.abc.ne.jp/index.phpに下記のようなソースを記述し、英語環境からアクセスされたらhttp://www.abc.ne.jp/en/へリダイレクトする場合、日本語のページを見たい場合でも強制的にhttp://www.abc.ne.jp/en/へリダイレクトされてしまいます。 【ソース】 $languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); $languages = array_reverse($languages); foreach ($languages as $language) {  if (preg_match('/^en/i', $language)) { // http://www.abc.ne.jp/en/にはpreg_match('/^ja/i', $language)   header("Location: http://www.abc.ne.jp/en/");  } } (1)、(2)の要件を満たしつつ、閲覧環境に合わせて表示するページを制御することは可能でしょうか。 良い方法があればご教示ください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • サイトのページの言語を lang="en"にすることで英語のページとし

    サイトのページの言語を lang="en"にすることで英語のページとして認識してくれると思うのですが、 この時点で海外から閲覧する機会が増えますが、 海外に公開することでサーバを攻撃される機会はかなり増えるのでしょうか? サーバのセキュリティをどれくらいあげないといけないのでしょうか?

  • wordpressで作ったサイトで問題が・・

    polylangで多言語化しました。日本語はAAA.com 英語版はAAA.com/enにしてあります。ブラウザ言語を検出を有効化しています。 AAA.com/en/と手動で打ち込むと、勝手にAAA.com/en//en/ AAA.com/enと手動で打ち込むと、勝手にAAA.com/en/en/ になって、ページが表示されません。AAA.comの英語の旗をクリックすると、AAA.com/enのページは普通に表示されます。 特に何をしたわけでもありませんが、急におかしくなってしまいました。。。

  • 外国からの閲覧者に別のページを見せたい。

    日本国内からのアクセスには通常のページを表示。 日本以外の国からのアクセスには上記のページとは異なる内容のページを 表示させたいのですが、そのような事は可能でしょうか。 というのも、良くサイトの上部に”日本語”、”英語” などの切り替えボタンで内容を 変更させる方法も有るのですが、”切り替える” という動作を無くしたいためです。 もし可能であれば、ヒントでも良いので、ご教授頂ければ幸いです。

  • IE9で特定サイト(日本語ドメイン)が閲覧できない

    お世話になります。 IE9で特定のサイトが閲覧できなくなりました。 「Internet Explorer ではこのページは表示できません」となります。 いわゆる「日本語ドメイン」のサイトがダメなようです。 Microsoftのサポートページ(http://support.microsoft.com/kb/956196/ja) の事項はひと通りやってみたのですが、改善しません。 対処法をご存知の方いらっしゃれば、よろしくお願いします。

  • JA国語?どこ?

    僕は、小さなイラストサイトを運営している者です。 最近アクセス解析を見てみたところ、(忍者アクセス解析) 国・言語欄に「JA」と書いてあるのです。 日本語なら、「日本語」 と書いてあるはずなのですが。 JA国 で検索してみても日本しか出てきませんし、JA言語 で検索してみてもHTMLしか出てきません。 この国は何処なのでしょうか? 教えていただけたら幸いです。 乱文失礼いたしました。

  • 外国サイトからのアクセスがある理由

    HPを運営しているのですが、ここ最近は毎月以下のような外国のサイトからのアクセスがあります。 ここで挙げた以外のサイトからのアクセスもあります。 http://semalt.com/ http://buttons-for-website.com/ http://mudanzas-barcelona.biz/ 何でこれらのサイトで私のHPがヒットしたのか分かりません。 登録した事も利用した事もありません。外国語及び外国人向けのページは一切ありません。 アクセスする人達の使用言語はポルトガル語、スペイン語等様々です。 どうしてこれらの外国のサイトからアクセスがあるのでしょうか。

専門家に質問してみよう