From 2cd9684c002a9963cc0f5710df3ac5afcfec4533 Mon Sep 17 00:00:00 2001 From: toprakdevx Date: Sat, 1 Aug 2026 12:57:35 +0300 Subject: [PATCH] Fix dynamic lastmod in sitemap.xml.ts --- src/config/seo.ts | 7 +++++++ src/pages/robots.txt.ts | 2 +- src/pages/sitemap.xml.ts | 36 +++++++++++++++++++++--------------- 3 files changed, 29 insertions(+), 16 deletions(-) create mode 100644 src/config/seo.ts 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", }, }); };