sitemap
This commit is contained in:
parent
efaae142f1
commit
e9ab134ebd
|
@ -0,0 +1,53 @@
|
||||||
|
import { removeTrailingSlash } from '$lib/utils/formatParse'
|
||||||
|
import { listPosts } from '$content/blog';
|
||||||
|
|
||||||
|
// prettier-ignore
|
||||||
|
const sitemap = (pages: string[]) => `<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<urlset
|
||||||
|
xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
|
||||||
|
xmlns:news="https://www.google.com/schemas/sitemap-news/0.9"
|
||||||
|
xmlns:xhtml="https://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:mobile="https://www.google.com/schemas/sitemap-mobile/1.0"
|
||||||
|
xmlns:image="https://www.google.com/schemas/sitemap-image/1.1"
|
||||||
|
xmlns:video="https://www.google.com/schemas/sitemap-video/1.1"
|
||||||
|
>
|
||||||
|
${pages.map((page) => `<url><loc>${removeTrailingSlash(page)}</loc></url>`).join('')}
|
||||||
|
</urlset>
|
||||||
|
`;
|
||||||
|
|
||||||
|
export const GET = async () => {
|
||||||
|
const staticPages = Object.keys(
|
||||||
|
// For other static pages. Except content pages - changelogs, guides, blog posts, guides etc.
|
||||||
|
import.meta.glob('/src/routes/**/!(_)*.{svelte,md,svx}')
|
||||||
|
)
|
||||||
|
.filter((page) => {
|
||||||
|
const filters = [
|
||||||
|
'/src/routes/index.svelte',
|
||||||
|
'404',
|
||||||
|
'slug]',
|
||||||
|
'title]',
|
||||||
|
'+error',
|
||||||
|
'+layout'
|
||||||
|
];
|
||||||
|
return !filters.find((filter) => page.includes(filter));
|
||||||
|
})
|
||||||
|
.map((page) => {
|
||||||
|
return page
|
||||||
|
.replace('/src/routes', 'https://mattmor.in')
|
||||||
|
.replace('/index.md', '/')
|
||||||
|
.replace('.md', '/')
|
||||||
|
.replace('/index.svelte', '/')
|
||||||
|
.replace('.svelte', '/')
|
||||||
|
.replace('/+page', '');
|
||||||
|
});
|
||||||
|
|
||||||
|
const Posts = listPosts().map((post) => `https://www.mattmor.in/blog/${post.slug}`);
|
||||||
|
const renderedSitemap = sitemap([...staticPages, ...Posts]);
|
||||||
|
|
||||||
|
return new Response(renderedSitemap, {
|
||||||
|
headers: {
|
||||||
|
'Cache-Control': 'max-age=0, s-maxage=3600',
|
||||||
|
'Content-Type': 'application/xml'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
Loading…
Reference in New Issue