generateSitemaps

您可以使用 generateSitemaps 函数为应用程序生成多个站点地图。

返回值

generateSitemaps 返回一个包含 id 属性的对象数组。

URL 地址

在生产环境中,生成的站点地图将位于 /.../sitemap/[id].xml 路径下。例如 /product/sitemap/1.xml

在开发环境中,您可以通过 /.../sitemap.xml/[id] 查看生成的站点地图。例如 /product/sitemap.xml/1。此差异是临时的,后续将采用生产环境的格式。

示例

例如,要使用 generateSitemaps 分割站点地图,可返回包含站点地图 id 的对象数组。然后使用 id 生成独立的站点地图。

import { BASE_URL } from '@/app/lib/constants'

export async function generateSitemaps() {
  // 获取产品总数并计算需要的站点地图数量
  return [{ id: 0 }, { id: 1 }, { id: 2 }, { id: 3 }]
}

export default async function sitemap({
  id,
}: {
  id: number
}): Promise<MetadataRoute.Sitemap> {
  // Google 限制每个站点地图包含 50,000 个 URL
  const start = id * 50000
  const end = start + 50000
  const products = await getProducts(
    `SELECT id, date FROM products WHERE id BETWEEN ${start} AND ${end}`
  )
  return products.map((product) => ({
    url: `${BASE_URL}/product/${product.id}`,
    lastModified: product.date,
  }))
}

On this page