web-dev-qa-db-ja.com

多言語の単一ページサイトでのURLのクリーンアップ

URLの多言語を削除したい、つまりsite.com/pageen.site.com/page、およびsite.com/en/pageの代わりにsite.com/page?lang=enを取得したい.

動機は次のとおりです:人間はものを必要としません。ドイツ語のフレーズを検索するか、ドイツ語圏のコミュニティを閲覧することで、page?lang=deリンクを取得できます。 Accept Languageは何を持っていますか?そのため、SEが唯一のパーティであり、Accept Languageのサポートが不十分(不足)であるため、乱雑なURLを必要とします。検索エンジンはすべての言語を理解しようとしますが、人間は必要な言語を知っています。クローラー専用の乱雑なURLを保持し、可能な限りきれいなURLを人間に見せたいです。

質問:

  1. 私の動機の何が問題になっていますか?
  2. 乱雑なURLを検索結果でクリーンなURLに置き換える方法はありませんか?
  3. SEはwindow.locationを考慮しますか? JS経由でURLバーをクリーニングするのは危険ですか?
  4. サイトマップを介してローカリゼーションをリンクできるGoogleとは異なり、Yandexは<link rel="alternate" hreflang="...がページのコード内にあることを望んでいます。これらのタグをwindow.locationと同期する必要がありますか?
3
user76879

URLをクリーンアップしたいというあなたの願望には何も問題はありませんが、ここではいくつかのことを指摘します...

  • ユーザーは一般的に、URLに言語コードを持つことを受け入れます(サブドメインまたはメインドメインのディレクトリとして)。
  • URLコードとして言語コードを使用しないことをお勧めします。URLパラメーターは簡単に変更したり忘れたりする可能性があるためです。
  • 多くのユーザーは、ブラウザのAccept Language設定が適切に設定されていません。これは、そのコントロール(パブリックまたはビジネスコンピューター)がないか、その方法を理解していないためです。

Googleがサポートするオプションの1つでもある一般的な方法は、言語コードにサブドメインを使用するか、国コードのトップレベルドメインを使用することです(Webサイトの翻訳ごとにドメイン名を購入する必要があるため、より高価です) )。また、ファイルにrel="alternate" href-lang="..."メタを含めて、翻訳バージョンにリンクします。また、ヘッダーをチェックしてAccept Languageヘッダーが存在するかどうかを確認し、デフォルトのサイト言語以外のものである場合、代わりに翻訳サイトに移動するオプションをユーザーに提示します。

2