![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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)の要件を満たしつつ、閲覧環境に合わせて表示するページを制御することは可能でしょうか。
良い方法があればご教示ください。
よろしくお願いします。
No.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の制御はこのディレクト内では行わないようにします。
では、お役に立てれば幸いです。
nazal2010様
ありがとうございます。
Smartyを使用すれば実現可能なのですね。
あいにく私が勉強不足なため、ご提案の手法は導入できませんが、次回以降のため勉強しておきたいと思います。
No.1
- 回答日時:
自動で振り分けるのではなく、閲覧者に選ばせるのが一番いい選択ではないでしょうか。
多言語で作成しているサイトではよくある導線だと思います。
どうしても選ばせるのがダメだと言うことであれば、全てのページに言語切り替えのリンクを表示するようにして、cookieに選択された言語を入れるようにして判定に使い、cookieが無いときだけHTTP_ACCEPT_LANGUAGEの値を見て振り分けるというのも手ではないでしょうか。
これも多言語で作成しているサイトでよくある機能だと思います。
ブラウザの言語設定は、普通の人はいじらないので結構いい加減だったりします。
一般的にはOSの言語設定を元に初期設定されている場合が多いですが、OSの言語と利用者の言語が一致しているとは限りませんので、利用者が選択する方法がいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) MacとWindows Google検索した時のURL表示の違いについて 1 2022/11/17 10:38
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- その他(プログラミング・Web制作) .htaccessの設定で、httpはhttpsに、且つ、wwwありに統一、の記述方法 2 2023/06/22 10:54
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 08:37
- Excel(エクセル) 列の複数ある空白セルを飛ばして、セルに並べて表示したい 3 2023/02/12 16:49
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/10 08:51
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- 英語 固有名詞を小文字で書くのは違反? 4 2023/04/09 01:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
html5,phpを覚えたいのですがま...
-
PHPとPerlとではどちらが修得し...
-
C言語、C+、C++、C#の違い
-
C言語とhtmlの違いを どな...
-
COBOLでのNOT = の AND条件
-
C++における継続行
-
リピート再生が出来ません
-
アセンブリ名とは??
-
C言語でBASE64のエンコードのプ...
-
小学生にプログラミング(Scratc...
-
身長187cmです。 新卒未経験か...
-
プログラムに書かれる"%"記号の...
-
C言語って古いですか?
-
abnormal program termination
-
encore と言う 譜面書きソフト...
-
HOLONついて教えてください。
-
COBOLで文字タイプを数字...
-
自営業でも実務経験に入る?
-
Pythonでの不均一なサイコロを...
-
もし仮に5つの言語(Python, J...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どのプログラミング言語で作ら...
-
Laravelなど、フレームワークを...
-
「楽天」で開発に使用している...
-
PHPでLinux用のCライブラリを呼...
-
いまから勉強するなら、どんなw...
-
Web系のプログラム言語はサーバ...
-
Webプログラミングを勉強するに...
-
フレームワークは開発環境だけ...
-
プログラミング言語同士の繋が...
-
PHPを覚えた方がいいですか?
-
適切/効率的なプログラミング言...
-
サルでもわかる 代入演算子 PHP
-
PHPの脆弱性ってどうなったんで...
-
CGIとPHPの違い
-
PHPを習おうと思っているのです...
-
0から覚えるPHP
-
phpの限界は?
-
PHPやPostgres、JAVAはどの...
-
1ページ目の検索窓に文字列を入...
-
どんなプログラミング言語を使...
おすすめ情報