你可以使用 generateSitemaps 函数为你的应用程序生成多个站点地图。
generateSitemaps 返回一个包含 id 属性的对象数组。
你生成的站点地图将可在 /.../sitemap/[id].xml 访问。例如,/product/sitemap/1.xml。
例如,要使用 generateSitemaps 函数分割站点地图,请返回一个包含站点地图 id 的对象数组。然后,使用该 id 生成唯一的站点地图。
import type { MetadataRoute } from 'next'
import { BASE_URL } from '@/app/lib/constants'
export async function generateSitemaps() {
// Fetch the total number of products and calculate the number of sitemaps needed
return [{ id: 0 }, { id: 1 }, { id: 2 }, { id: 3 }]
}
export default async function sitemap(props: {
id: Promise<number>
}): Promise<MetadataRoute.Sitemap> {
const id = await props.id
// Google's limit is 50,000 URLs per sitemap
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,
}))
}import { BASE_URL } from '@/app/lib/constants'
export async function generateSitemaps() {
// Fetch the total number of products and calculate the number of sitemaps needed
return [{ id: 0 }, { id: 1 }, { id: 2 }, { id: 3 }]
}
export default async function sitemap(props) {
const id = await props.id
// Google's limit is 50,000 URLs per sitemap
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,
}))
}| 版本 | 变更内容 |
|---|---|
v16.0.0 | 从 generateSitemaps 返回的 id 值现在作为 Promise 传递给站点地图函数。 |
v15.0.0 | generateSitemaps 现在在开发和生产环境之间生成一致的 URL。 |
v13.3.2 | 引入 generateSitemaps。在开发环境中,你可以在 /.../sitemap.xml/[id] 上查看生成的站点地图。例如,/product/sitemap.xml/1。 |