はてなブログのサイトマップがインデックスカバレッジに登録できなくて苦労している方が多いようです。
調べてもはっきりした答えが見つからず、解決するまで1か月かかってしまいましたが、ようやく登録できました。
僕のブログがサイトマップに登録できなかった原因と解決策をご説明します。
登録できなかった原因はクローラーが迷子になっていた
今まで大きな勘違いをしていたのが、インデックスとはGoogleに登録(圏外も含めて検索結果に表示)されること。
サイトマップはクローラーが迷子にならないようにする地図なんですね。
地図がないと、Googleのクローラーが記事を発見できなかったり到着が遅れたりして、なかなかインデックスされない状態が続く(発生する)かもしれません。
少し時間はかかりますが、実はサイトマップが無くても「内部リンク経由」でそのうち勝手にインデックスされるようになります。
登録できなかった状況
まずは登録ができていない状況です。
最終読み込み日時が古すぎますし、47記事投稿して検出されたURLの合計数が13しかありません…。
その検出された13個のURLの中に「/sitemap.xml?page=1(100記事までのサイトマップ)」と「/sitemap_page.xml(固定ページのサイトマップ)」がいるので実質11個です…。
カバレッジがおかしい
カバレッジを確認すると表示がおかしいです。
検出されたURL(読み込まれたURL)の合計数が13なのに、有効なページが92もあり、そのうち51も除外されています。
- インデックス登録されましたが、サイトマップに送信していません:90
- 送信して登録されました:0
- 除外の内容代替ページ(適切な canonical タグあり):26
- クロール済みインデックス未登録:20
- クロールエラー:6
- 重複しています。ユーザーにより、正規ページとして選択されていません:1
- 検出―インデックス未登録:0
サイトマップに送信していませんの「90」は全部ということですね。代替とか重複ってどういうこと??
他のソースから認識されている可能性とは?
このキャプチャは別の日に撮ったものなので、2019/02/09は気にしないでくださいね。
サイトマップが無いことになっていますが、他のソースから認識されている可能性があるとのこと。
やはり、何かが重複していることが原因みたいです。
ヒントは最終読み込み日時
最終読み込み日時が「2019/01/24」で止まっています。この日に何があったのか。
実は、初めて独自ドメインを取得した日です。/feedなど色々とサイトマップに登録していますが、この頃から検出されたURL数が変わっていませんね。
現状、検出されているURLは13のままです。
無料版はてなブログで書いた記事が11なので、独自ドメイン取得前の記事しかサイトマップに登録できていないことになっています。
クローラーの動きは複雑なルールがあり条件を満たしていないと、サイトマップに記載されている項目をクロールしないことがあるという解釈で良いですかね?
重複していたり代替ページが正規ページとして指定されてないと、サイトマップを正しくクロールしてくれないみたいです。
つまり、サイトマップ内のどのURLが正しいのかクローラーが迷っている状態と受け取れます。
解決策:正規URLを指定をして重複をなくす
はてなブログで正規URLを指定する方法をご説明します。
独自ドメイン関連の設定
今までは、「Googleサーチコンソール サマリー」の左上にある「+プロパティを追加」で…
http://attack.work/
https://attack.work/
http://www.attack.work/
https://www.attack.work/
を登録していました。
数日前に僕が登録した時はドメインプロパティの機能がまだなかったです…。
ここで所有権を確認できた場合は「サイトの設定」で「wwwあり・なし」どちらを使用するか登録します。どちらに統一するかはよく考えてくださいね。
旧サーチコンソールの右上歯車から入ります。
所有権の確認ができなかった場合はDNSの設定が必要です。
表示された「TXT」コードをコピーして新しいタブで独自ドメインを取得したサイトを開きます。
僕は独自ドメインをお名前.comで取得したのでお名前.com にログインします。
ドメイン設定⇒ネームサーバの設定⇒DNS関連機能の設定→ドメイン名にチェックを付けて次へ。
「以下3点は無料でご利用いただけます」の下にあるDNSレコード設定をするをクリック。
ホスト名は何も入れずにタイプはTXTを選択。
ボリュームにサーチコンソールでコピーしたコードをペーストします。
httpsかhttpかは無視していいみたいです。一番下の「DNSレコード設定用ネームサーバの変更確認」をチェックして設定変更をします。
グーグルサーチコンソールに戻り、所有権の確認ボタンをクリックするのですが、設定が反映されるまで少し時間がかかります。僕は15分くらいで反映されて所有権の確認ができました。
これでサーチコンソールの「サイトの設定」から「wwwあり」「wwwなし」を選択できるようになっているはずです。
サイトマップの再登録
サイトマップに登録しているURLを一度、全部消してみました。そして、「/sitemap.xml」だけを入力して送信します。
念のために、「URLを検査」で公開URL(投稿済み記事URL)をテストをしてから「インデックスの登録をリクエスト」をクリックしました。
今までは、いきなりインデックスの登録をしていましたが、テストをしてからリクエストが正しい順番ですね。
ついにサイトマップが検出されました!
送信してから検出されるまで1日かかりましたが、ようやくサイトマップを発見してもらうことができました。
※検出されたURLが49に増えた
ずっともやもやしていたのがスッキリ。面倒でやっていなかったトップページの正規化(wwwあり・wwwなし)が原因だったとは…。
なぜ90もの有効ページがあったのか考察
サイトマップが検出される前は、「インデックス登録されましたが、サイトマップに送信していません」が90と表示されていました。
記事を一つの部屋だとすると、部屋と部屋を結んでいる廊下も検出されていたのだと考えられます。
例えば、僕のブログのTOPページURLは
https://www.attack.work/
です。
トップページ下の「次へ」(ページナビゲーション)をクリックすると
https://www.attack.work/?page=1550634346
に変化します。
TOPページにいることに違いはありませんが、記事一覧ページの2ページ目はURLが違うのです。
こういったパーマリンクの違う細かいURLまで読み込んでいた(検出していた)のが、異常に「除外URL」が増えた原因です。クローラーの制御(正規化、トップページ以外の記事一覧ページのnoindex)で対策できます。
wwwあり・なしの件を軽視していましたがSEO的には重要な項目だと思われます。まだ設定をしていない方は設定してみましょう。
追記:サーチコンソールとはてなブログの相性に問題がありそうです。Bingではリクエストを送信しなくてもサイトマップをしっかりクロールしてくれます。
正常にサイトマップが登録された後に不安定な状態が続いています。その後の記事を書きましたので、よろしければ以下の記事もご確認ください。
追記
現在はWordpressに移行しています。
WordPressのプラグインで作成した「sitemap.xml.gz(圧縮されたサイトマップ)」では、すべての記事がすぐに検出されます。
はてなブログで運営していたころの「sitemap.xml」は、検出されたURLがずっと102のままです。
「sitemap.xml?page=1」など、考えられるサイトマップをすべて送信しましたが、一向に検出URLは増えませんでした。
Bingはリクエスト送信ボタンを押さなくても正常に検出してくれます。そのため、はてなブログとGoogle(サーチコンソール)の相性が悪く、サイトマップに登録できていないと確信しています。
はてなブログがGoogleのシステムに対応しない限り、正常な状態のサイトマップは検出されません。
たとえ検出されなくてもブログ開始から半年くらい経つと、サーチコンソールの「インデックス登録をリクエスト」すると、5分ほどで検索結果に表示されるようになります。
つまり、サイトマップの検出に多くの時間を割くよりも、新記事やリライトに力を注ぐ方がPVアップの近道と考えます。