もっく日記

書いておぼえるためのブログ

多言語サイの検索結果が英語表記になってしまったときのメモ

多言語サイのGoogle検索結果が英語表記になってしまったので修正した時のメモです。

原因と対策

原因1

ユーザーの言語に合わせてJavascriptでリダイレクトをかけていたせいで、Googlebot(英語ユーザー)が英語ページにリダイレクトされてしまっていた。

対策1

hreflangタグを設定して、リダイレクトを外しました。

hreflangタグとは

Googleの検索結果を、ユーザーの言語に合わせて表示するためのものです。 (例)日本語と英語の2言語あるサイトで、メインターゲットを日本語にするなら

<link href="日本語サイトのページURL" hreflang="x-default" rel="alternate">
<link href="日本語サイトのページURL" hreflang="ja" rel="alternate">
<link href="英語サイトのページURL" hreflang="en" rel="alternate">

のように指定します。

hreflangタグの確認方法

Search Consoleの「ダッシュボード > 検索トラフィック > インターナショナルターゲティング」で確認できます。

正しく設定されてないと「サイトにhreflangタグがありません。」と表示されます。

コードは正しいのに反映されない場合は、サイトがGoogleのルールーに違反してるのが原因かもしれません。

私の場合は「原因2」のせいで、コンテンツがないGoogleのルールーに違反したサイトと認識されていました。(「Fetch as Google」でレンダリング確認したらキャプチャが真っ白でした。)

Fetch as Google」とは

Fetch as Googleは、ヘルプにあるように、「Google が行う URL のクロールまたはレンダリングの方法をテストする」ものです。週に500回まで取得できます。

原因2

ページロード時はコンテンツをcssで非表示にして、読み込み後にJavascriptで表示。としていたせいで、Googlebotのレンダリングでコンテンツが非表示になり、コンテンツのないソースだけのページと認識されたしまった。

対策2

初期表示でコンテンツを非表示にするのをやめて、JSがない状態でもコンテンツが正しく表示されるように修正しました。 (GooglebotのJavascriptレンダリングはまだ万全ではないようです。) 同期的な読み込みには対応していて、Ajax 経由でのコンテンツ表示など、非同期読み込みには対応してないということみたいです。認識違いしてました。。。(2017/7/12修正)

こちらのサイトが参考になりました

javascriptを使ったSEO対策まとめ - Qiita

検索結果を直す

Search Console」のアカウントを持っていれば、サイトの再クロールの依頼を出したり、クロールエラーの確認ができます。

修正&反映のながれ

  • (1)ソースを修正します(「Search Console」のアカウントがない場合は再クロールされるのを数日待ちます。)
  • (2)「Search Console」に確認したいサイトを登録して、「クロール > Fetch as Google」に移動します。
  • (3)「取得してレンダリング」ボタンをクリックします https://gyazo.com/8f78ce30acbd65b2397b9d86c760091a

  • (4)しばらくすると読み込みが完了するので、リストから確認したい項目を選択してレンダリング表示を確認します

  • (5)表示に問題がなければ「インデックス登録をリクエスト」をクリックします

あとは再クロールされるのを待ちます。即時に反映されることもあれば、1〜2日かかることもありました。

ちなみに

Fetch as Google」直後は日本語の結果が表示されたのに、翌日になると英語に戻ることがありました。そのときはhreflangタグは正しいけど、「原因2」のせいで違反したページになってました。

解決のヒントを探すなら

ウェブマスター ヘルプ フォーラム

その他

メインターゲットを日本以外にするなら、ドメインは「.com」や「.net」

日本のユーザーがメインターゲットで、補足として多言語サイトを設置するなら「.jp」など地域に紐づいたドメイン(ccTLD)でも問題ありませんが、英語圏をメインターゲットにする場合は、「.com」や「.net」など(gTLD)にします。

雑感

Googleガイドラインを理解せねばと思いました。

タグは正しいはずなのに反映されない場合は、クロールエラーとか、仕様にそってない、などの原因が考えられます。ただ何が仕様で、どこが仕様に違反してるのか、SEOに不慣れだと原因をみつけるのは大変です。

結局はガイドラインをよく読むのが近道なのかなと思いました。

など