haihai Blog

Astro フレームワークに sitemap を追加する

2024-07-09

はじめに

Astro Sitemap を使って Astro フレームワークに sitemap を追加します。

インストール

公式セットアップ自動化コマンドの astro add でインストールを行います。

npx astro add sitemap

npm install や config ファイルの更新について質問があり、 yes を選択します。
astro.config.mjs が更新されています。

  import { defineConfig } from 'astro/config';
+ import sitemap from '@astrojs/sitemap';

  export default defineConfig({
    // ...
    integrations: [
+     sitemap()],
  });

astro config 設定

サイトの URL を astro.config.*site プロパティを使って追加します。
この設定がないとビルド時に警告が表示され、 sitemap は作成されません。

  import { defineConfig } from 'astro/config';
  import sitemap from '@astrojs/sitemap';

  export default defineConfig({
    // ...
+   site: 'https://blog.example.com',
    integrations: [sitemap()],
  });

<head> タグへ追加

Layout.astro<head> タグへ sitemap の URL を追加します。

  <head>
+   <link rel="sitemap" href="/sitemap-index.xml" />
  </head>

robots.txt へ追加

検索エンジンのクローラー向けの src/pages/robots.txt.ts へ sitemap の URL を追加します。

import type { APIRoute } from 'astro'

const robotsTxt = `
User-agent: *
Allow: /

Sitemap: ${new URL('sitemap-index.xml', import.meta.env.SITE).href}
`.trim()

export const GET: APIRoute = () => {
  return new Response(robotsTxt, {
    headers: {
      'Content-Type': 'text/plain; charset=utf-8'
    }
  })
}

動作検証

npm run build でビルドを実行します。
dist ディレクトリに sitemap-index.xmlsitemap-0.xml が作成されていることが確認できました!
デフォルトでは全てのファイルが sitemap の対象となりますが、 filter 機能などもあるようです。

参考 URL