diff --git a/docs/content/3.guide/3.recipes/1.sitemap.md b/docs/content/3.guide/3.recipes/1.sitemap.md new file mode 100644 index 000000000..c90dee553 --- /dev/null +++ b/docs/content/3.guide/3.recipes/1.sitemap.md @@ -0,0 +1,63 @@ +--- +title: Sitemap +--- + +# Sitemap Generation + +A sitemap file is useful for helping Google to better index your website, ensuring that the content you write can be visible on search results. + +This can be created utilising the `sitemap` library, so you'll need to install that which can be done like so: + +```bash +yarn add --dev sitemap +``` + +## Server Route + +We will be utilising the [server routes](https://v3.nuxtjs.org/guide/features/server-routes) available within Nuxt, and to do so you'll need to create the `server/` directory within your websites root directly. + +Once this is done, create a `routes/` directory inside this, and add a `sitemap.xml.ts` file, this will translate to `/sitemap.xml`. + +You'll need to add the following: + +```ts [server/routes/sitemap.xml.ts] +import { serverQueryContent } from '#content/server' +import { SitemapStream, streamToPromise } from 'sitemap' + +export default defineEventHandler(async (event) => { + // Fetch all documents + const docs = await serverQueryContent(event).find() + const sitemap = new SitemapStream({ + hostname: 'https://example.com' + }) + + for (const doc of docs) { + sitemap.write({ + url: doc._path, + changefreq: 'monthly' + }) + } + sitemap.end() + + return streamToPromise(sitemap) +}) +``` + +Now, once users go to `https://example.com/sitemap.xml`, you'll find the generated XML file with all your pages. + +When using `nuxt generate`, you may want to pre-render the sitemap since the server route won't be able to run on a static hosting. + +You can do this using the `nitro.prerender` option in your `nuxt.config`: + +```ts [nuxt.config.ts] +import { defineNuxtConfig } from 'nuxt' + +export default defineNuxtConfig({ + // ... + nitro: { + prerender: { + routes: ['/sitemap.xml'] + } + } +}) +``` diff --git a/docs/content/3.guide/3.recipes/_dir.yml b/docs/content/3.guide/3.recipes/_dir.yml new file mode 100644 index 000000000..667e034cd --- /dev/null +++ b/docs/content/3.guide/3.recipes/_dir.yml @@ -0,0 +1 @@ +icon: heroicons-outline:book-open diff --git a/docs/content/3.guide/3.migration/1.from-v1.md b/docs/content/3.guide/4.migration/1.from-v1.md similarity index 100% rename from docs/content/3.guide/3.migration/1.from-v1.md rename to docs/content/3.guide/4.migration/1.from-v1.md diff --git a/docs/content/3.guide/3.migration/_dir.yml b/docs/content/3.guide/4.migration/_dir.yml similarity index 100% rename from docs/content/3.guide/3.migration/_dir.yml rename to docs/content/3.guide/4.migration/_dir.yml