Portfolio/server/routes/sitemap.xml.get.ts
2026-09-08 19:54:06 +02:00

22 lines
841 B
TypeScript

import { listPosts } from '~~/server/utils/posts'
export default defineEventHandler(async (event) => {
const base = useRuntimeConfig().public.siteUrl.replace(/\/+$/, '')
const posts = await listPosts()
const urls = [
{ loc: `${base}/`, lastmod: new Date().toISOString() },
{ loc: `${base}/projects`, lastmod: new Date().toISOString() },
{ loc: `${base}/blog`, lastmod: posts[0]?.date ?? new Date().toISOString() },
...posts.map((p) => ({ loc: `${base}/blog/${p.slug}`, lastmod: p.updated ?? p.date })),
]
const xml = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${urls.map((u) => ` <url><loc>${u.loc}</loc><lastmod>${u.lastmod}</lastmod></url>`).join('\n')}
</urlset>`
setHeader(event, 'content-type', 'application/xml; charset=utf-8')
return xml
})