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