feat: generate /fr/sitemap.xml via custom Nitro route

@nuxtjs/sitemap is incompatible with app.baseURL: '/fr/' here — it broke
nginx routing (403) on this deployment where /fr/ is served via an alias
to a separate static build. A hand-rolled Nitro route sidesteps the
module entirely and gets prerendered to a plain sitemap.xml file at the
root of the generated output, matching what the nginx alias expects.
This commit is contained in:
Djeex
2026-08-11 11:44:46 +02:00
parent 916c16d7ce
commit 4874316023
2 changed files with 29 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
import { serverQueryContent } from '#content/server'
// generates /fr/sitemap.xml without @nuxtjs/sitemap (incompatible with baseURL /fr/)
export default defineEventHandler(async (event) => {
const docs = await serverQueryContent(event).find()
const urls = docs
.filter((doc: any) =>
doc._path &&
!doc._path.startsWith('/_') &&
!doc._path.endsWith('/_dir')
)
.map((doc: any) => ` <url><loc>https://docu.djeex.fr/fr${doc._path}</loc></url>`)
.join('\n')
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${urls}
</urlset>`
setHeader(event, 'Content-Type', 'application/xml')
return sitemap
})