icon
【NPM】Astroでのサイトマップを生成方法

準備

npm

npm install @astrojs/sitemap

pnpm

pnpm add @astrojs/sitemap

yarn

yarn add @astrojs/sitemap

どれかをターミナルからインストールする
そうすると、 node_modulesフォルダ内に

設定変更

astro.config.mjs

import { defineConfig } from 'astro/config';

src/layouts/Layout.astro

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

動的にrobots.txtを生成する

src/pages/robots.txt.ts

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',
},
});
};

PhpStormを使うと、もしかしたら
() => {
return new Response(robotsTxt, {
headers: {
'Content-Type': 'text/plain; charset=utf-8',
},
});
}
この部分が、
イニシャライザーの型 () => Response は変数の型 APIRoute に代入できません
みたいなエラーが出るかもしれませんが、無視で大丈夫なはずです!