diff --git a/src/config/seo.ts b/src/config/seo.ts new file mode 100644 index 0000000..aec9753 --- /dev/null +++ b/src/config/seo.ts @@ -0,0 +1,7 @@ +export const seoConfig = { + lastmod: "2025-06-01T00:00:00Z", +} as const; + +export function getLastmod(): string { + return process.env.SITEMAP_LASTMOD ?? seoConfig.lastmod; +} diff --git a/src/pages/robots.txt.ts b/src/pages/robots.txt.ts index 8e2d3dd..d8c93d8 100644 --- a/src/pages/robots.txt.ts +++ b/src/pages/robots.txt.ts @@ -1,5 +1,5 @@ import type { APIRoute } from "astro"; -import { siteConfig } from "../config/site"; +import { siteConfig } from "@/config/site"; export const GET: APIRoute = () => { const robotsTxt = `User-agent: * diff --git a/src/pages/sitemap.xml.ts b/src/pages/sitemap.xml.ts index 557aa8d..dd9dd4b 100644 --- a/src/pages/sitemap.xml.ts +++ b/src/pages/sitemap.xml.ts @@ -1,27 +1,33 @@ import type { APIRoute } from "astro"; -import { siteConfig } from "../config/site"; +import { siteConfig } from "@/config/site"; +import { getLastmod } from "@/config/seo"; + +const ALWAYS = [ + { loc: siteConfig.url, priority: "1.0" }, + { loc: `${siteConfig.url}/downloads`, priority: "0.8" }, +]; export const GET: APIRoute = () => { + const lastmod = getLastmod(); + + const urls = ALWAYS.map( + (page) => ` + ${page.loc} + ${lastmod} + weekly + ${page.priority} + ` + ).join("\n"); + const sitemap = ` - - ${siteConfig.url} - ${new Date().toISOString()} - weekly - 1.0 - - - ${siteConfig.url}/downloads - ${new Date().toISOString()} - weekly - 0.8 - - -`; +${urls} +`; return new Response(sitemap, { headers: { "Content-Type": "application/xml; charset=utf-8", + "Cache-Control": "public, max-age=86400, s-maxage=3600", }, }); };