web-dev-qa-db-ja.com

同じURL上で異なる言語の同じコンテンツを提供する

ここにはこのトピックに関する質問がいくつかありますが、私の質問に固有の答えは見つかりませんでした。

そのため、現在1つの言語のみをサポートするWebサイトを構築していますが、バイリンガルにしたいと考えています。つまり、すべてのページを2つの言語で利用できるようにします。各ページには同じコンテンツがあり、2つの言語に翻訳されています。私がやりたいのは、PHPスクリプトでブラウザの言語を検出し、それに基づいて異なるバージョンを提供することです(おそらく、言語を切り替えるボタンもあります)。ただし、そのアプローチでは、同じページの両方のバージョンが1つのURLを共有します(たとえば、example.com/aboutは、ユーザーのブラウザ言語やセッション/ Cookieに応じて、ページのいずれかのバージョンを表示します)。それはSEOの目的にとって悪いことですか?そして、私が知らない他の欠点はありますか?

私はプロジェクトのレイアウト方法を考えてこれを求めていますが、異なるURL(たとえばexample.com/en/aboutまたはen.example.com/about)で各ページの2番目のバージョンを利用するのはそれほど簡単ではありません。上記のアプローチがnotの場合、URLパラメーターによって言語を決定するのに実行可能な代替手段になりますか。 example.com/about?l=en(パラメーターが渡されない場合、スクリプトはデフォルトでローカル言語になります)?

1
MoritzLost

私がやりたいのは、PHPスクリプトでブラウザの言語を検出し、それに基づいて異なるバージョンを提供することです(おそらく、言語を切り替えるボタンもあります)。ただし、このアプローチでは、同じページの両方のバージョンが1つのURLを共有します(たとえば、ユーザーのブラウザー言語やセッション/ Cookieに応じて、example.com/aboutはページのいずれかのバージョンを表示します)。それはSEOの目的にとって悪いことですか?

ここでの問題は、検索エンジンクローラーがデフォルトで基本設定を使用し、Cookieを使用しないことです。たとえば、example.com/aboutがあり、Cookieとブラウザの言語が特定の値に設定されている場合に英語のテキストが表示され、何も設定されていない場合にフランス語のテキストが表示される場合、この場合の検索エンジンクローラーはスキャンのみ可能ですフランス語のテキスト。これは、英語のテキストがインデックスに登録されないことを意味します。

クローラーが実際に使用する設定を本当に知りたい場合は、PHPスクリプトを使用して、検索エンジンが使用する言語、Cookie、およびIPアドレスを検出できます。

uRLパラメータによって言語を決定することは実行可能な代替手段でしょうか。 example.com/about?l=en(パラメーターが渡されない場合、スクリプトはデフォルトでローカル言語になります)?

この設定は、検索エンジンのクローラーが特別な設定(特定のCookieや言語の設定など)なしで各ページのインデックスを作成できるため、最初のアイデアよりも優れています。

Apacheがインストールされている場合、mod_rewriteモジュールを使用して、次のようなわかりやすいURLを作成することをお勧めします。

http://example.com/en/about
http://example.com/fr/about
http://example.com/it/about

モジュールの使用を開始する方法の詳細は次のとおりです。

https://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/

2
Mike