インストール
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
以上がつまった部分。