リクエストを動的に処理できますが、別のメソッドを提供する必要があります。その理由は次のとおりです。Google によると、SEOに関心がある場合は、ページの言語が明確であることを確認してください。その場でハットトリックを実行し、言語設定で言語を切り替えることができますが、検索エンジンからその言語でトラフィックを得ることが期待される場合は、常に他の言語であるページへのリンクを提供する必要もあります.
このページが言語を動的に検出する場合、クロール時に Google が認識した言語がページの言語になります。
http://www.example.com/
サイトに別の言語のクエリ文字列フラグが含まれている場合、サイトのどこかに第 2 言語へのリンクがあれば、そのサイトは両方の言語でクロールされる可能性があります。これらは、スペイン語のページが存在する場所を Google に示すための良い例です (別のドメインが最適なオプションです)。
http://es.example.com - best for SEO
http://www.example.com/?lang=es
http://www.example.com/es/
PHP コードでは、ブラウザの優先言語の最初の 2 桁のコードのみをキャッチしています。実際に複数の言語で本を読む人もいます (基本的にはアメリカ人以外の人です)。彼らは他の言語を好みの言語で持っているかもしれません。フランスの誰かがfr
好みの言語として持っているかもしれませんが、彼らは英語 ( en
) も理解できるかもしれません。
fr,en-US;q=0.8,en;q=0.6
またはIEでこれ:
fr-FR,en-US;q=0.5
このコードは、言語のフラグが設定されているかどうかを確認し$_GET
、自動翻訳をオーバーライドします。私はこのコードを見つけ、それが使用されているサイトがほとんどの人が複数の言語を話すヨーロッパのサイトであるため、私の目的に合わせて修正しました。このコードについては、ここで変更したので、優先言語がスペイン語でない場合、デフォルトで英語になります。lang.php
これは、すべてのページに含まれるようなファイルになります。
<?php
$langs = array();
if (!empty($_GET['lang'])){
$tempLang = $_GET['lang'];
//Setup the switch for all of the possible languages.
switch($tempLang){
case 'es':
$pref='es';
break;
default:
//english
$pref='en';
}
} elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
// break up string into pieces (languages and q factors)
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
if (count($lang_parse[1])) {
// create a list like "en" => 0.8
$langs = array_combine($lang_parse[1], $lang_parse[4]);
// set default to 1 for any without q factor
foreach ($langs as $lang => $val) {
if ($val === '') $val = 1;
$lParse = strtolower(preg_replace('!\-.*$!','',$lang));
if(!isset($newLangs[$lParse])){
$newLangs[$lParse] = $val;
}
}
// sort list based on value
arsort($newLangs, SORT_NUMERIC);
}
//Set the preferred languages for the website (available translations)
$preferred = array('en','es');
//Check for overlap keeping the preference order
$intersect = array_values(array_intersect(array_keys($newLangs), $preferred));
//print_r($newLangs);
if(isset($intersect[0])){
//Set the first preference
$pref = $intersect[0];
if(preg_match('!^es!',$pref)){
$pref='es';
}
} else {
//default to english
$pref = 'en';
}
} else {
//default to english
$pref = 'en';
}
?>
含まれているページlang.php
で、変数をチェックし$pref
て、言語の適切な翻訳を表示する必要があります。
Javascript
この同じコードを使用して Javascript でリダイレクトを実行し、ページを別の言語でロードすることができますが、検索エンジンは通常、エクスプロイトについて Javascript のみを調べ、Javascript のリンクをたどりません。Google ウェブマスターのガイドラインによると:
Lynxなどのテキスト ブラウザを使用してサイトを調べます。ほとんどの検索エンジン スパイダーは、Lynx と同じようにサイトを認識します。JavaScript、Cookie、セッション ID、フレーム、DHTML、Flash などの高度な機能により、テキスト ブラウザでサイト全体を表示できない場合は、検索エンジン スパイダーがサイトをクロールできない可能性があります。
AJAX を使用してクリックするだけで変更できますが、AJAX がリッスンする URL にはパラメーターを渡す必要があり、これらは通常$_GET
変数を介して渡されます。
IPルックアップ
一部の人々が試みたもう 1 つの方法は、IP アドレスを確認し、場所を逆引きして出身国を確認し、国語を選択することです。これに関する問題は次のとおりです。
- 人々は旅行します
- 一部の IP アドレスは、ユーザーがブラウザを使用している国ではなく、他の国の所有者 (企業ブロックを考えてください) に登録されています。
- 一部の IP アドレス リストは非常に不正確です。
クッキー
すべてのユーザーが Cookie を受け入れるわけではなく、企業のファイアウォールによっては Cookie を削除することさえあります。