SEO
将你的应用针对搜索引擎进行优化的最佳实践与实现说明。
MuseMVP 内置了完整的 SEO 基础设施,涵盖 sitemap、robots、页面 metadata 与 Open Graph 配置。本文介绍各部分的实现位置与自定义方式。
SEO 能力概览
Sitemap
自动生成 sitemap.xml,包含首页、营销页、博客、文档、法律页等多语言 URL。
Robots
默认允许所有爬虫访问全站,可按需在 robots.ts 中调整规则。
Metadata
各页面通过 generateMetadata 输出 title、description、Open Graph 等标签。
多语言
sitemap 与 metadata 均支持 i18n,按 locale 生成对应 URL 与文案。
核心实现
sitemap.xml
sitemap.ts 会聚合以下页面类型:
- 首页:按
config.i18n.locales生成各语言首页 URL。 - 静态营销页:changelog、contact、pricing、features 等,由
config.ui.*开关控制是否纳入。 - 法律页:来自 Content Collections 的
allLegalPages。 - 博客文章:
content/posts下已发布文章,需config.ui.blog.enabled。 - 文档页:
content/docs下所有文档,需config.ui.docs.enabled。
// src/app/sitemap.ts 结构示意
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const baseUrl = getBaseUrl();
const locales = config.i18n.enabled
? Object.keys(config.i18n.locales)
: [config.i18n.defaultLocale];
return [
// 首页
...locales.map((locale) => ({ url: new URL(`/${getSiteMapLocale(locale)}`, baseUrl).href, ... })),
// 静态营销页(根据 config 过滤)
// 法律页
// 博客
// 文档
];
}自定义路由纳入 Sitemap
在 config.ui.headerConfig.customRoutes 中注册且 enabled: true、external: false 的路由会自动加入 sitemap 的静态页列表。
robots.txt
默认配置允许所有爬虫访问全站:
// src/app/robots.ts
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: "*",
allow: "/",
},
};
}如需禁止某些路径,可添加 disallow 规则,例如:
rules: {
userAgent: "*",
allow: "/",
disallow: ["/api/", "/app/settings/"],
},metadata
各页面通过 Next.js generateMetadata 输出 SEO 标签:
- 根布局(
src/app/layout.tsx):metadataBase、manifest、默认openGraph等 - 落地页(
src/app/(landing-page)/[locale]/layout.tsx):按 locale 的title、description、keywords - 博客/文档/法律页:各自
page.tsx中的generateMetadata,基于内容动态生成
i18n 与 Metadata
使用 next-intl 的 getTranslations 获取当前语言的 SEO 文案,确保多语言页面的 metadata 正确。
上线前 SEO 检查清单
确认 NEXT_PUBLIC_SITE_URL 或等效环境变量指向生产域名,保证 sitemap 与 OG 链接正确。
访问 https://你的域名/sitemap.xml 和 https://你的域名/robots.txt 验证输出。
使用 Google Search Console 提交 sitemap。
用浏览器开发者工具或 Open Graph 调试工具 检查分享预览。