HTML文法的に正しくないheadセクションの中のrel=hreflangやrel=canonicalをGoogleは認識しない

[レベル: 中〜上級]

headセクションがHTML文法的に正しくない場合、Googleは rel="canonical" 要素や rel="hreflang" 要素を正常に認識できないことがあります。
たとえば、headセクションの中での使用が許されていない img タグや iframe タグがあると、Googlebotはそこでレンダリングを停止しそれ以降の要素を読み取りません。

有効でないheadセクションはhreflangを無効にさせる

英語版オフィスアワーで、hreflangが正常に機能していない理由を質問した参加者に対してGoogleのJohn Mueller(ジョン・ミューラー)氏は次のようなことを指摘しました。

ページをレンダリングする際に、何かおかしなものがheadセクションにあるとheadセクションのなかにあるものをすべて無効にしてしまう。それにはhreflangも含まれる。

技術的には起こりうることで、そうなるとhreflangを私たちはまったく認識しなくなる。hreflangがなかったからといって悪いわけじゃないから、エラーとしてレポートしたりはしない。

Gary Illyes(ゲイリー・イェーシュ)氏によれば、headセクションが文法的に正しくない場合にGoogleが無効にしてしまうものには、rel=”canonical”も含まれるそうです。

hreflang/canonical を無効にしてしまうheadセクションとは?

rel="canonical"rel="hreflang" を無効にしてしまう、正しくないheadセクションとは具体的にはどのようなものなのでしょうか?

いろいろなパターンが考えられると思いますが、1つ確実なのはheadセクション内では許されていないタグの使用です。
たとえば、imgタグです。

ほかには、iframeタグです。
大手旅行サイトが、headセクションにiframeタグを埋め込んだことが原因でhreflangが機能しなかった事例が実際に発生しています。

headセクションに広告タグを埋め込んで問題が発生したケースも聞いたことがあります。
広告なので、ひょっとしたらiframeを使っていたのかもしれません。

imgタグもiframeタグもheadセクションの中で使えるタグではないですね。
そういう不適切な要素に出くわすと、headセクションの読み取りをそこでGooglebotはストップしてしまうのです。

普通にやっていれば、headセクションにimgタグもiframeタグを記述することはないでしょう。
しかしJavaScriptを使ってheadセクション内の要素を動的に生成している場合は要注意です。

ほかには、閉じタグがないことやタグのスペルミスなども hreflang や canonical の読み取りを妨げてしまう要因になるかもしれません。

HTMLは正しく使う

HTML文法が100点だからといってGoogleの評価が上がることはありません。
逆に、文法的に間違いがたくさんあるからといって、それだけで評価が下がることもありません。

とはいえ、Googlebotのクロールやレンダリングに支障をきたすような不適切なHTMLは問題を引き起こすことがあります。
rel=”canonical”が機能しない、rel=”hreflang”が機能しない、なんていうトラブルが発生したときには、headセクションがHTML文法的に正しく構成されているかどうかも確認項目の1つに含めましょう。