Google Search Consoleがサイトマップインデックスを読まないのをどうにかする。

過去の記事で「 @astrojs/sitemap にはバグがあり、 3 桁の数字を含む URL がサイトマップに追加されない」ということを書いたのですが、v1.4.0 でようやく修正されました

Astro はサイトマップを sitemap-index.xml (サイトマップインデックス)+ sitemap-*.xml (分割されたサイトマップ)の形式で生成します。

@astrojs/sitemap 🚀 Astro Documentation

Google Search Console に登録するのは sitemap-index.xml のほうです。

サイトマップ インデックス ファイルでのサイトマップの管理 | Google 検索セントラル  |  ドキュメント  |  Google for Developers

というわけで登録します。

サイトマップを読み込めませんでした。
サイトマップを読み込めませんでした。

エラーになりました。なんで??????????????????????????

sitemap-0.xml で試したところ、こちらは登録できたので、分割されたサイトマップに問題はなさそうです。 sitemap-index.xml だけ中身がバグっているのかと思い、生成された XML を見てみました。

<!-- 確認のためにインデントと改行を追加していますが、実際はすべて1行目に出力されています。 -->
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://retrorocket.biz/sitemap-0.xml</loc>
  </sitemap>
</sitemapindex>

とくに誤りもなく問題はなさそうです。

Googlebot からどう見えているのかを知りたかったので、 nginx のアクセスログを grep したところ、 sitemap-index.xml にアクセスされた形跡がありませんでした。これは Search Console のバグな予感がします。

「とりあえず URL を変えればいいのではないか?」と思い、適当なクエリパラメータ ?dummy をつけてみました。

成功しました。分割されたサイトマップも読み込まれたようです。
成功しました。分割されたサイトマップも読み込まれたようです。

成功しました。 (sitemap-0.xml の最終読み込み日時がサイトマップインデックスと異なるのは、sitemap-0.xml を試しに登録したときの名残ですね。)

アクセスログにも形跡が残っています。

66.249.73.131 - - [25/Jul/2023:04:54:58 +0000] "GET /sitemap-index.xml?dummy HTTP/1.1" 200 161 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"

なんだか納得がいきませんが解決してよかったです。フィードバックは送りましたが、おま環かもしれないので修正されるかは未知ですね。