はてなブログのsitemap.xmlがSearchConsoleで長期間に渡り保留中なので、いろいろ調べてみましたが出てくるのはどれも古い情報ばかり。
- sitemapの保留が続く原因
- 答えは「robots.txt」にある
- はてなブログでサイトマップの仕様が変更?
- 中身が全く同じ2つのサイトマップ
- 「/sitemap.xml?page1」を使えない理由
- sitemap_index.xmlを実際に使ってみる
- それでも保留が続く場合
みなが必死で調べまくった末に同じサイトに食いつくのでこうした現象になるのでしょう。
どうにも満足いく結果にならないので、なかなか処理されない原因を自分なりに探ってみました。
なお、個々のサイトによってサイトマップ保留の原因は異なるため、コレだという確証にはいたりません。様々な要因が存在するのは事実ですので、あくまでも一例として扱っていただければと思います。
sitemapの保留が続く原因
サイトマップが保留になっていると、ちゃんと送信されているのだろうかと心配になりGoogle_SearchConsoleで状況を確認することになります。
その場合、何度見ても指定したURLが間違いないことが確認できることでしょう。
なら、なぜ保留なのか?
保留と表現しているので送信されていないという意味ではなさそうです。
ということは、「そっちから送信はされたし、こっちも受信はしたけど理由があって処理してないよ。」という意味ですね。はい。
答えは「robots.txt」にある
はてなブログではユーザーがrobots.txtを編集できる機能がありません。
robots.txtはコアなWebマスターでない限り編集する必要もなく。仕様上もともと編集できないということであれば、一般のブロガーは興味をもたないものでしょう。
はてなブログのrobots.txtはユーザーが意識しいないところで自動的に生成されていています。
robots.txtの中身は、Google_SearchConsoleで確認ができますが、実は「はてなブログ」では、robots.txtの中で検索エンジン用のサイトマップは「sitemap_index.xml」だと明示しています。
robots.txtに記載されたサイトマップURLは、検索ロボットのアクセスを拒否する記述。いわゆる「Disallow」の扱いではありません。
サイトマップはこのURLですよと検索ロボットに伝えるための記述をしています。
robots.txtで検索ロボットに対して、このサイトのサイトマップは「sitemap_index.xml」だと伝えているのに、手動で別なURLを送信することは不正確な情報をSearchConsoleへ送ることになりかねません。
保留の期間が長く続くのはこの辺にも原因があるのではないでしょうか。
実際には処理が済んでいるサイトマップがあるのに、更に別のサイトマップを処理する理由が検索エンジン側にはありません。
はてなブログでサイトマップの仕様が変更?
はてなブログのサイトマップのURLは「/sitemap.xml」だと信じて疑いませんでしたが、ここ最近では「sitemap_index.xml」(いわゆるサイトマップインデックス)を標準として扱っているようです。
この傾向はWordPressのプラグインでも見られます。このことを知らずしてプラグインを古いバージョンに戻せという情報だけを鵜呑みにしてしまったりします。実際には、最新のプラグインが利用しているサーバーやインストール済みWoesPressのバージョンに適合しているかによります。
そのようなことから、現在「はてなブログ」がデフォルトで吐き出しているサイトマップの形式はサイトマップインデックスです。
中身が全く同じ2つのサイトマップ
はてなブログが生成するサイトマップは「sitemap_index.xml」がデフォルトだとした場合、一つの疑問が浮かびます。
sitemap.xmlも送信は可能
それは、今まで通りに「sitemap.xml」を送信していてもエラーが出ないサイトが存在するのはどうしてかというものです。
「sitemap.xml」を送信していて保留と表示される理由は、サイトマップの送信とは別な理由で検索エンジンに負担がかかった場合に一時的に処理を停止した場合などでしょう。
「sitemap_index.xml」と「sitemap.xml」は両方が実際にサーバー上に存在し中身は全く同じものです。
これは、ブラウザのアドレスバーにサイトマップのURLを入力して比較してみれば分かります。
問題があれば片方はスルーされる?
この二つのサイトマップで外見上はっきり分かる違いは、robots.txtに記載があるかないかだけです。
二つの同じファイルに対して、同じ処理をするのは機械にとって余計な仕事になります。
なんらかの事情により、無駄な処理を停止するならrobots.txtに記載がない方を保留するのは常套手段と考えられます。
「/sitemap.xml?page1」を使えない理由
ネットの情報には、sitemap.xml?page1を送信したら保留だったのが正常に処理されたというのがあります。
実はこのsitemap.xml?page1はサイトマップであることは間違いありませんが、サイトマップインデックスの機能がありません。
はてなブログでは、記事数が100を越えたあたりで別途sitemap.xml?page2を追加送信する必要があります。
記載される正確な記事数は数えていませんが、200記事を越えればおそらく3つ目のサイトマップsitemap.xml?page3を手動で追加送信しなければなりません。
サイトマップとしては有効であるものの、これでは正直なところ面倒です。
sitemap_index.xmlを実際に使ってみる
そんなわけで自身のブログのサイトマップをsitemap_index.xmlで送信してみることにしました。
結果は、これまた延々と保留中のままです。
記事数の少ない開設後間もないブログでは送信数が正確に表示され、その後1日か2日でページがインデックスされますが、記事数が100を越えている当ブログについては1ヶ月近くたっても保留のままです。
併せてsitemap.xml?page1も送信
これこそが正解と思っていた「sitemap_index.xml」で保留が続くため、試しに「sitemap.xml?page1」を追加で送信(sitemap_index.xmlはそのまま)したところ、なんと「sitemap.xml?page1」の記載に相当分の記事数だけ認識されました。
サイトマップが認識されたところで、その後すぐに追加で送信したほうの「sitemap.xml?page1」は削除してしまっても送信数に問題はありません。
sitemap_index.xmlでインデックス済みに
その後、古い記事が記載されている「sitemap.xml?page2」についても一時的に追加で送信し送信されたページ数が確認できたところで削除することにしました。
こうしてsitemap_index.xmlだけでも全てのページが送信された状態になり、その後数日で半数以上のインデックスが確認されるようになっています。
どうやら、robots.txtにはsitemap_index.xmlがサイトマップであると記述していても「はてなブログ」のサイトマップはGoogle_SearchConsoleと相性が良くないようです。
特に、一度sitemap.xml?page1などでインデックスが済んだサイトでは別な「sitemap_index.xml」に差し替えるのにはある程度時間がかかるようです。
逆に新規のブログでは、そのような問題は発生しないので「はてなブログ」を使い新しいブログを作成したなら最初から「sitemap_index.xml」を送信しておいた方が良いかもしれません。
それでも保留が続く場合
はてなブログのサイトマップについては、ネット上で「運営側に問い合わせたらsitemap.xmlが正解だった」という情報も数多く見受けます。
上に書いた通り「sitemap_index.xml」も「sitemap.xml」も中身の記述は同じです。
仮説になりますが、sitemap.xmlが問題なく使えているということは、サイト上に他の問題が存在しないということであり、逆にsitemap_index.xmlでも保留が続く場合は何らかの事情により処理が進んでいないと思って良いでしょう。
このように、理解が難しい「はてなブログ」のサイトマップですが、運営側が開発ブログなどで明確な情報を提供しない訳を考えると、運営側も常に検索エンジンの同行や新しいシステムについての情報を探っているからなのではとも理解できます。
検索エンジン側のシステム更新に即座に対応させたい場合に、その辺の情報を公にしてしまっていると不都合が多いとも考えられるでしょう。