クロール・インデックスの制御においては最も厳しい設定をGoogleは適用する。noindexをJSで取り除いてもインデックスされないまま

[レベル: 上級]

クロールやインデックスを制御する場合、最も制限が厳しい設定を Google は適用します。
状況によっては JavaScript による操作が機能しないこともあります。

制限がもっとも厳しい設定を Google は適用する

reddit で、次のような質問が出ました。

  • ページのテンプレートには nofollow robots meta タグがデフォルトで設定されている
  • 一部のページでは、JavaScript によってその nofollow robots meta タグを取り除いている

Google は、最初は nofollow を認識するがレンダリング後は nofollow がなくなるので、通常のようにリンクをたどるようになるか?

John Mueller(ジョン・ミューラー)氏は、このように説明しました。

ページで制限がもっとも厳しい設定を Google は利用する(これは、robots meta タグが一般的にどのように処理されるかに合致する。たとえば、noindex と index の両方があるとき、noindex が index よりも優先されるだろう)。

もし静的 HTML に nofollow があって、それを JS で取り除いたとしても、Google は依然としてその nofollow を使うだろう。同様に、robots meta タグが何もなくて、JS で noindex を追加したとしたら、Google はその noindex を使うだろう。

要するに、nofollow を JS で追加するのは機能するが、 nofollow を JS で削除するのは機能しない。

Google will use the most restrictive setting you have on the page (this matches how robots meta tags are generally processed, eg if you have a “noindex” + “index”, then the “noindex” will override the “index”). If you have a “nofollow” in static HTML and remove it with JS, Google will still use the “nofollow”. Similarly, if you don’t have any robots meta tag, and add a “noindex” with JS, Google will use the “noindex”. In short, adding a “nofollow” via JS would work, removing it won’t.

nofollow を JS で削除しても nofollow のまま

制限がもっとも厳しい設定が適用されることに関しては問題ないでしょう。
robots.txt でも、より範囲が絞り込まれた設定に基づいてクロールされますね(たとえば、disallow でサイト全体としてクロールを拒否していたとしても、特定のディレクトリで allow でクロールを許可すれば、そのディレクトリ配下のページだけはクロール対象になる)。

ところが、JavaScript が絡んでくるとややこしくなってきます。
ミューラー氏の最後の一文に注目です。

In short, adding a “nofollow” via JS would work, removing it won’t.

要するに、JS で追加した nofollow は機能するが、JS で削除した nofollow は機能しない。

DOM の生成が完了した段階で、最終的に JavaScript によって取り除かれていたとしても、最初に返される生の HTML に nofollow があれば、それに従うということです。

これは、noindex にも当てはまるはずです。

noindex robots meta タグが最初から設置されているページがあったとします。
JavaScript で削除するように構成して、レンダリング後は noindex タグがなくなっていたとしても、Google は依然として noindex タグを適用するということになります。

Google 内部での JavaScript のレンダリングには時間がかかるため、インデックスに反映するには数日、数週間かかることがあります。
それでも、いずれは処理されます。

JavaScript で noindex を挿入したページは、しばらくは検索結果に出るかもしれません。
しかし、最終的には検索結果には出なくなります。

ところが、逆のパターンは成り立たないことになります。
JavaScript で noindex を取り除いたページは Google 側でのレンダリングが完了したとしても、検索結果に出ないままです。
なぜなら、制限が厳しい noindex が適用されたままになるからです。

JavaScript で挿入するタグでクロールやインデックスを制御しているサイトは要注意です。
時間がかかることに加えて、制限の厳しさの比較にも注意を払う必要があります。