Next.js 15 站点地图与 robots.txt 自动化实践概述基于 App Router 的 `sitemap`/`robots` 约定,自动输出多语言路径与 `hreflang`,支持增量更新与 PPR 缓存协同,减少 SEO 运维成本。国际化配置与路由// next.config.js(片段) export default { i18n: { locales: ['en-US', 'zh-CN', 'ja-JP'], defaultLocale: 'en-US' } } 自动生成 sitemap// app/sitemap.ts import type { MetadataRoute } from 'next' export default async function sitemap(): Promise<MetadataRoute.Sitemap> { const base = 'https://example.com' const locales = ['en-US', 'zh-CN', 'ja-JP'] const pages = await fetch(`${base}/api/pages`).then((r) => r.json()) as Array<{ slug: string; lastmod?: string }> const entries: MetadataRoute.Sitemap = [] for (const page of pages) { for (const locale of locales) { const url = `${base}/${locale}/${page.slug}` entries.push({ url, lastModified: page.lastmod ?? new Date(), changeFrequency: 'weekly', priority: 0.8 }) } } return entries } 自动生成 robots.txt// app/robots.ts import type { MetadataRoute } from 'next' export default function robots(): MetadataRoute.Robots { const base = 'https://example.com' return { rules: [{ userAgent: '*', allow: '/', disallow: ['/admin', '/internal'] }], sitemap: [`${base}/sitemap.xml`], host: base } } `hreflang` 与 alternates// app/[locale]/[slug]/page.tsx(片段) import type { Metadata } from 'next' export async function generateMetadata({ params }: { params: { locale: string; slug: string } }): Promise<Metadata> { const canonical = `https://example.com/${params.locale}/${params.slug}` return { alternates: { canonical, languages: { 'en-US': canonical.replace(params.locale, 'en-US'), 'zh-CN': canonical.replace(params.locale, 'zh-CN'), 'ja-JP': canonical.replace(params.locale, 'ja-JP') } } } } 增量更新与缓存协同// app/api/pages/route.ts(供 sitemap 使用) import { NextResponse } from 'next/server' export const revalidate = 3600 export async function GET() { const rows = await db.pages.list() // 返回 slug 与 lastmod return NextResponse.json(rows, { headers: { 'Cache-Control': 'public, max-age=3600' } }) } 技术参数与验证浏览器/爬虫:Googlebot、Bingbot;站长工具提交通过指标:sitemap 覆盖 3 语言;增量更新延迟 < 1h;索引收录率提升 10-25%应用场景多语言内容站点与电商门户品牌出海 SEO 升级注意事项`alternates.languages` 必须包含所有语言路径;robots 禁止私有路径确保 `base` 域名与生产环境一致;分区域多站点需多 sitemap常见问题Q: 需要多个 sitemap 文件吗?A: 内容量大或多域名场景建议分片并在 robots 中列出多条 sitemap。参考资料Next.js Metadata 与 Sitemap/Robots 文档hreflang 与多语言 SEO 规范---发布信息:已发布 · 技术验证 · 阅读 34 分钟 · CC BY-SA 4.0

发表评论 取消回复