172cef236b
- Mappa Google su /contact ripristinata a click-to-load (consenso esplicito): nessun dato inviato a Google prima del click dell'utente - Nuove pagine /privacy e /cookie-policy (informativa art. 13 GDPR e cookie), compilate con i dati del titolare IN-SANITY LAB S.R.L. (P.IVA 03927341200) - Footer: ragione sociale + P.IVA e link a Privacy e Cookie Policy - Form contatti: link all'informativa privacy sotto l'invio - sitemap: aggiunte /privacy e /cookie-policy Testi legali da far validare; base tecnica conforme (no analytics/tracker, solo cookie tecnici, font self-hosted). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
19 lines
941 B
TypeScript
19 lines
941 B
TypeScript
import type { APIRoute } from 'astro';
|
|
import { getDb } from '../lib/db';
|
|
import { services } from '../data/services';
|
|
export const prerender = false;
|
|
|
|
const STATIC = ['/', '/about', '/contact', '/training', '/services', '/blog', '/promo-eventi', '/privacy', '/cookie-policy'];
|
|
|
|
export const GET: APIRoute = ({ site }) => {
|
|
const base = (site ?? new URL('https://insanitylab.tielogic.xyz')).toString().replace(/\/$/, '');
|
|
const posts = getDb().prepare('SELECT slug FROM posts WHERE draft = 0').all() as { slug: string }[];
|
|
const urls = [
|
|
...STATIC,
|
|
...services.map((p) => `/services/${p.slug}`),
|
|
...posts.map((p) => `/blog/${p.slug}`),
|
|
];
|
|
const xml = `<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n${urls.map((u) => ` <url><loc>${base}${u}</loc></url>`).join('\n')}\n</urlset>`;
|
|
return new Response(xml, { headers: { 'Content-Type': 'application/xml' } });
|
|
};
|