電子書籍の厳選無料作品が豊富!

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)の要件を満たしつつ、閲覧環境に合わせて表示するページを制御することは可能でしょうか。
良い方法があればご教示ください。

よろしくお願いします。

A 回答 (2件)

>(1)ページランクは下げたくない



トップページからのリダイレクトは止めたほうがいいと思います。
以前リダイレクトさせた時に、一気に圏外まで落とされました・・・。

Smarty等のテンプレートエンジンを使用する方法は手遅れでしょうか?

もしガッチリ作り込みされているシステムでしたら、今更?って感じですが、
テンプレートエンジンの選択肢がOKであれば、HTTP_ACCEPT_LANGUAGEで識別して
日本語と英語それぞれの、該当のテンプレートファイルを呼び出せば良いと思います。


>(2)閲覧者の表示言語の選択肢は残したい

Smarty等のテンプレートエンジンを使用する選択肢がOKであれば、
http://www.abc.ne.jp/index.php
で、(1)は解決しますので、

ご提示されているように、
http://www.abc.ne.jp/en/
とディレクトリを用意し、http://www.abc.ne.jp/index.php
英語のコンテンツと全く同じものを「 en 」ディレクトリに設置します。
但し、HTTP_ACCEPT_LANGUAGEの制御はこのディレクト内では行わないようにします。


では、お役に立てれば幸いです。
    • good
    • 0
この回答へのお礼

nazal2010様

ありがとうございます。
Smartyを使用すれば実現可能なのですね。
あいにく私が勉強不足なため、ご提案の手法は導入できませんが、次回以降のため勉強しておきたいと思います。

お礼日時:2014/05/19 10:08

自動で振り分けるのではなく、閲覧者に選ばせるのが一番いい選択ではないでしょうか。


多言語で作成しているサイトではよくある導線だと思います。

どうしても選ばせるのがダメだと言うことであれば、全てのページに言語切り替えのリンクを表示するようにして、cookieに選択された言語を入れるようにして判定に使い、cookieが無いときだけHTTP_ACCEPT_LANGUAGEの値を見て振り分けるというのも手ではないでしょうか。
これも多言語で作成しているサイトでよくある機能だと思います。

ブラウザの言語設定は、普通の人はいじらないので結構いい加減だったりします。
一般的にはOSの言語設定を元に初期設定されている場合が多いですが、OSの言語と利用者の言語が一致しているとは限りませんので、利用者が選択する方法がいいと思います。
    • good
    • 0
この回答へのお礼

t_ohta様

ありがとうございます。
ひとまず自動振り分けではなく閲覧者に選んでいただく形にしたいと思います。

お礼日時:2014/05/19 10:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!