🚀

astrojs/sitemapの設定に関する覚書

に公開

インストール

astro addの場合

  • npmの場合
npx astro add sitemap
  • pnpmの場合
pnpm astro add sitemap

通常インストールの場合(Manual Install)

  • pnpm
pnpm add @astrojs/sitemap
  • nm
npm install @astrojs/sitemap

導入してまずやること

astro addを使わなかった場合、astro.config.tsのintegrationsにsitemap()を追加。

astro-sitemapを使って、生成されたsitemap.xmlのリンクを、Google Search Consoleに送信しようとした。そしたら、そもそもsitemap.xmlが生成されていなかったことがわかった。問題は、site:"URL"のsiteに自分のデプロイ先のドメインを書いていなかったことだった。

つまりまず、astro-sitemapを導入したら、astro.config.tsのdefineConfig関数の設定を見る。そして、そこのsite変数にサイトのURLを書き、必要ならばintegrationsにsitemap()をいれなきゃいけない。インストール後に完了すべき設定は以下の通り。

export default defineConfig({
     /*...他の設定*/
     site: "URL" /*デプロイ先のURL*/,
     integrations: [
          sitemap(),
          /*...他のプラグイン*/
     ],
     /*他の設定*/
});

生成されるのはsitemap.xmlじゃない

以上の設定をやって、https://your-domain/sitemap.xmlにアクセスしてもファイルが存在しない。通常は、ルートディレクトリにsitemap.xmlがあるはず。

問題は、ファイル名がsitemap.xmlじゃないことだった。astrojs/sitemapで生成されるのは、sitemap-index.xmlとsitemap-0.xmlの二つ。サイトが大きいと、sitemap-1.xml.....sitemap-n.xmlと言うふうにインデックスがついて複数作られる。

Google Search Consoleにサイトマップを送りたい場合は、基本的にsitemap-index.xmlを送ればよい。indexファイルにはすべてのsitemap-〇.xmlのリンクが書かれるから、クローラーがそれを認識し自動で走査を始める。そもそも、indexとその子ファイルという形式は、グーグルクローラーが推奨する形式らしい。

まとめ

  • astro.config.tsにsiteのURLを書くのを忘れない
  • サイトマップのxmlのファイル名は、sitemap-index.xml

以上がつまった部分。

Discussion