使用NextJS开发站点时如何让Google收录动态路由页面
NextJS百万级动态路由页面Google收录解决方案
- 首先调整预渲染配置,不要尝试全量生成百万条路由的静态页面,耗时耗力完全没有必要
- 如果你用的是Pages Router:动态路由的
getStaticPaths只需要返回TOP N的热门路由即可,将fallback设置为'blocking',不要用fallback: true。前者在首次请求(包括爬虫请求)时会等待服务端完整渲染页面后再返回HTML,和预生成的SSG页面效果完全一致,爬虫可以直接拿到完整的页面内容,不会遇到加载态;后者会先返回带加载状态的页面,后续客户端渲染内容,很容易导致爬虫误判内容。同时可以搭配revalidate配置开启增量静态再生(ISR),设置合理的缓存更新时间,内容更新后无需重新部署就能自动生成新的静态页面。 - 如果你用的是NextJS 13+的App Router:只需要用
generateStaticParams返回部分热门路由,剩余路由默认会走动态渲染,爬虫访问时会拿到完整的服务端渲染内容,也可以配置revalidate参数开启增量静态再生优化性能。
- 如果你用的是Pages Router:动态路由的
- 主动向Google提交页面地址,降低爬虫发现页面的成本
- 生成分片式动态sitemap:不要做单文件全量sitemap,按照谷歌规则每个子sitemap最多存放5万条链接,通过sitemap索引文件整合所有子sitemap,按内容的更新频率设置对应的更新周期,谷歌爬虫会自动定期拉取sitemap抓取内容。
- 配合谷歌搜索控制台的索引API,新内容上线时主动推送URL到谷歌,大幅提升新内容的收录速度,无需等待爬虫自发爬取。
- 优化页面基础SEO配置,避免收录后被判定为无效内容
- 每个动态页面配置唯一的元数据,Pages Router用
next/head,App Router用根布局/页面的metadata导出,保证每个页面的title、description、核心内容都具备唯一性,不会被谷歌判定为重复内容弃收。 - 页面核心内容确保在服务端渲染时就注入到HTML中,不要完全依赖客户端异步加载核心文本内容,保证爬虫拿到的HTML源码中存在可识别的有效内容。
- 每个动态页面配置唯一的元数据,Pages Router用
- 搭建合理的内部链接体系引导爬虫爬取
在首页、分类聚合页、热门列表页、内容页的相关推荐模块放置动态页面的入口链接,谷歌爬虫顺着内部链接即可逐层爬取到长尾内容页面,不需要全量手动提交。
内容的提问来源于stack exchange,提问作者jhon sanchez
相关产品推荐
相关产品推荐

