食谱

网站地图

网站地图文件有助于 Google 更好地索引您的网站,确保您撰写的内容在搜索结果中可见。

需要完整的网站地图解决方案?查看Nuxt Simple Sitemap,它与 Nuxt Content 的文档驱动模式和前置 matter 集成。

否则,您可以随意使用以下指南实施自己的网站地图。

添加依赖项

这可以通过利用 sitemap 库来创建,该库可以按如下方式安装

pnpm add sitemap

服务器路由

我们将利用 Nuxt 中提供的 服务器路由,为此,您需要在网站根目录中直接创建 server/ 目录。

完成后,在此目录中创建一个 routes/ 目录,并添加一个 sitemap.xml.ts 文件,这将转换为 /sitemap.xml

您需要添加以下内容

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)
})

现在,当用户访问 https://example.com/sitemap.xml 时,您会找到包含所有页面的生成的 XML 文件。

在使用 nuxt generate 时,您可能希望预渲染网站地图,因为服务器路由无法在静态托管上运行。

您可以使用 nuxt.config 中的 nitro.prerender 选项来执行此操作

nuxt.config.ts
export default defineNuxtConfig({
  // ...
  nitro: {
    prerender: {
      routes: ['/sitemap.xml']
    }
  }
})