RSSとは?
- RSS とは、Web サイトが更新情報の一覧を機械が読める形式で配信する仕組みです。
- RSS リーダー(Feedly など)にフィードの URL を登録しておくと、更新を一覧で追えます。
本ブログの設定(astro.config.mjs)
このプロジェクトでは設定ファイル名は astro.config.mjs です(astro.config.js でも同様の役割)。
site に公開中の URL を指定します。ビルド時に Astro.site や RSS 用の context.site として参照されます。
// astro.config.mjs(抜粋)
import mdx from '@astrojs/mdx';
import sitemap from '@astrojs/sitemap';
import { defineConfig } from 'astro/config';
export default defineConfig({
site: 'https://2026-04-06as.vercel.app',
integrations: [mdx(), sitemap()],
});
@astrojs/sitemapにより、ビルド時に sitemap(例:sitemap-index.xml)が生成されます。siteの指定が前提になります。
src/components/BaseHead.astro で参照されるもの
site は Astro.site として各ページで使えます。BaseHead では主に次を出力しています。
- canonical タグ …
Astro.url.pathnameとAstro.siteから絶対 URL を組み立てる - RSS への
link(絶対 URL) …new URL('rss.xml', Astro.site) - sitemap への参照 …
<link rel="sitemap" href="/sitemap-index.xml" />(パスはビルド成果物に合わせた相対指定)
※ RSS フィード本文(rss.xml)の生成そのものは BaseHead ではなく、後述の src/pages/rss.xml.js(@astrojs/rss)が担当します。
---
// BaseHead.astro(抜粋)
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
---
<link rel="sitemap" href="/sitemap-index.xml" />
<link
rel="alternate"
type="application/rss+xml"
title={SITE_TITLE}
href={new URL('rss.xml', Astro.site)}
/>
<link rel="canonical" href={canonicalURL} />
RSS フィード(rss.xml)の生成
@astrojs/rss のエンドポイントで、site は context.site(=設定の site)として渡します。
// src/pages/rss.xml.js(抜粋)
import rss from '@astrojs/rss';
export async function GET(context) {
const posts = await getCollection('blog');
return rss({
title: SITE_TITLE,
description: SITE_DESCRIPTION,
site: context.site,
items: posts.map((post) => ({
...post.data,
link: `/blog/${post.id}/`,
})),
});
}
まとめ
| 項目 | 役割 |
|---|---|
astro.config.mjs の site | 公開 URL の基点。Astro.site / context.site に反映 |
BaseHead.astro | canonical、RSS リンクの絶対 URL、sitemap への link |
rss.xml.js | フィード XML の生成(site: context.site) |
@astrojs/sitemap | sitemap XML の生成(integrations で有効化) |