質問: 多言語ウェブサイトとseo 可能性のある複製: 検索エンジンにサイトをクロールさせて、データのローカライズされたビューを表示するにはどうすればよいですか? 申し訳ありませんが、この投稿は少々不愉快になりましたが、これまでのところウェブ上で満足のいく答えは見つかりませんでした。私はしばらくの間ウェブサイトを開発しており、その中に複数の言語のサポートを組み込みました。すべての用語、単語、フレーズはjson形式のファイルに保存され、デコードされて配列に変換されます。これにより、サイト全体を異なる言語で簡単に作成できます。このwebサイトは100%自家製のコードで構成されています。wordpress、drupalなどのフレームワークはないため、前述の多言語プラグインはいずれも機能しません。言語を切り替えるには、ユーザーはページの上部にあるリンクをクリックします(実際には、html構造の下部にある上部に配置されます)。サイトの各ページにはこのメニューがあり、クエリ文字列パラメーターが追加されます。 /hotels/index.htmlは/hotels/index.html?lang=frになります。スクリプトはlangパラメーターを確認し、ユーザーのcookieを変更して適切なjsonファイルをロードし、langパラメーターなしで以前と同じページに戻ります。これは、ユーザーが同じページにとどまり、リンクがまったく同じであるため、言語を切り替える非常に便利な方法です。 seoが優先事項ではない複数の言語サポートを必要とする別のサイト(社内専用プログラム)の後にこの方法で構築しました。訪問者が初めてサイトを訪れた場合、スクリプトはhttp_accept_lang定数を見て、適切な言語をロードし、cookieを設定します(ジオロケーティングの代わりに時間がかかり、個人的に嫌いです-私は住んでいます私のosとブラウザは英語ですが、タイではgoogleでもタイ語版を提供しています)。私の質問は-googleや他のseがこれらの言語でサイトのインデックスを作成することを望んでいますが、urlにlang属性はありません。ユーザーがフランス語またはロシア語でgoogleを使用している場合、それぞれフランス語またはロシア語でサイトが提供されます。 url /hotels/index.htmlのバージョンは英語(デフォルト)、フランス語、ロシア語ですが、同じurlのままなので、これはgoogleや他のseの問題だと思います。googleがこの方法で複数言語のサイトをインデックスに登録する方法を誰か説明できますか?サブドメインを使用すると、それらを分離するのに最適ですか?サイトでのurlの処理方法を変更したくないのは、インデックスに登録されるクエリ文字列をできる限り少なくしたいからです。別の注意として、言語リンクを使用してインデックス作成のためにサイトを誤って開いたため、どういうわけかリダイレクトが正しく機能せず、googleに/something/index.html?lang=ru?lang=ruなどのリンクが作成されました。スクリプトでこれらを検出し、これらのlangパラメータを削除するために301リダイレクトを配置しました...これらの不良リンクは、googleのリダイレクトされたurlに徐々に置き換えられますか?
回答: このため、独自に設計する前に、人気のあるフレームワークとcmsを確認することをお勧めします。これらは非常に一般的な問題であり、多くの異なる開発者によって何度も解決されています。 cmsを設計するために最初に座ったとき、それらのいくつかは明らかではないので、cmsを構築するときにそこにあるものを見て、いくつかの一般的な問題/解決策/慣習が何であるかを見るのに役立ちます。まず、基本的なコンテンツは一意のurlからステートレスに提供されるべきです。ユーザーの言語設定をcookieまたはセッション変数で保存しても問題ありませんが、ユーザーを正しいurl /サブサイトにリダイレクトして、好みの言語でコンテンツを表示する必要があります。それ以外の場合、コンテンツは検索エンジンから効果的に隠蔽されます(悪意のある方法ではなく、自己害的な方法で)。したがって、サイトで使用されている主要言語が何であれ、ページのそのバージョンは次のようになります。http://foo/bar ローカリゼーションは次のようになります。http://ru.foo/bar http://fr.foo/bar http://de.foo/bar etc. cookieを必要とせずに一意のurlから各ページにアクセスできる限り、必ずしもクリーンurlを使用する必要はありません。あなたはまだ次のようなことができます:http://foo/bar?lang=ru http://foo/bar?lang=fr http://foo/bar?lang=de ただし、クリーンurlはユーザーフレンドリであり、検索エンジンフレンドリでもあると一般に受け入れられています。ほとんどの場合、コンテンツにカスタムルートを簡単に追加できるルーティングエンジンがあるため、この変更の実装は、従来のcmsまたはcmsフレームワークではかなり簡単です。そうしない場合、およびurlがアプリケーションアーキテクチャから切り離されていない場合は、さらに作業が必要になる場合があります。