ブラウザの言語に合わせて表示ページを振り分けたい
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)の要件を満たしつつ、閲覧環境に合わせて表示するページを制御することは可能でしょうか。
良い方法があればご教示ください。
よろしくお願いします。
お礼
ご回答ありがとうございました。 しかし、Active Toolsuite の ▼をクリックしても、再インストールしても解決できない、かなり手ごわい問題です。 もう少し頑張ってみます。