HSL-N07 ·
言語の自動切り替えと検索ボット:Google-InspectionTool の落とし穴
ブラウザの言語に合わせて日本語・英語ページを切り替える JavaScript が、Google の検査ツールを英語ページへ転送していた不具合の記録。
起きたこと
Search Console の「URL検査」で、トップページ(/)の公開URLをテストしたところ、「ユーザーが指定した正規URL」が、英語ページ(/en/)になっていました。
原因
ブラウザの言語に合わせて「/」と「/en/」を切り替える JavaScript の除外条件が、bot や crawl といった文字だけでした。Google の検査ツールのユーザーエージェントは Google-InspectionTool で、bot の文字を含みません。そのため、英語設定の検査ツールが、英語ページへ転送されていました。
対策
- ユーザーエージェントに google、bot、crawl、spider、bing などを含む場合は、切り替えない。
- 自動操作中のブラウザ(navigator.webdriver)も、対象から外す。
- 転送は、初回の訪問だけにし、手動の切り替えを記憶する。
検証
ローカルで、Google の検査ツール、Googlebot、bingbot、通常の Chrome のユーザーエージェントを再現し、英語設定でトップページを開きました。修正後は、検索ボットと検査ツールは「/」のまま、通常のブラウザは英語設定のとき「/en/」へ移動します。
学び
言語の自動切り替えは、強制せず、提案のバナーにする選択肢もあります。どの設計でも、各言語のURLが、単独でインデックスされることを、最優先にします。