Next.js SSR站点Googlebot优先抓取JS/JSON而非HTML的解决方法
Next.js SSR站点Googlebot优先抓取HTML资源配置方案
针对SSR模式Next.js站点skillcombo.com出现的Google抓取配额被JS、JSON非核心资源占用、HTML页面收录不足问题,可通过以下四层配置完成引导:
1. robots.txt 精准抓取规则配置
从爬虫入口层面限制非核心资源的抓取权限,把配额倾斜给HTML页面,配置参考如下:
User-agent: Googlebot # 全局允许访问根路径及所有HTML页面 Allow: / Allow: /*.html$ # 禁止抓取Next.js客户端路由预加载生成的JSON数据 Disallow: /_next/data/ Disallow: /*.json$ # 禁止抓取冗余JS构建块,SSR首屏已返回完整内容无需爬虫拉取执行 Disallow: /_next/static/chunks/ Disallow: /*.js$ # 白名单放行核心渲染/结构化数据相关JS(可根据自身构建文件实际路径调整) Allow: /_next/static/chunks/main-*.js Allow: /structured-data.js
2. 响应头分层设置索引规则
通过X-Robots-Tag给不同类型资源明确索引指令,从协议层面告知Googlebot资源优先级,在next.config.js中添加如下配置:
// next.config.js module.exports = { async headers() { return [ { // 匹配所有页面路由 source: '/:path*', missing: [ { type: 'header', key: 'content-type', value: '*(javascript|json)*' } ], headers: [ { key: 'X-Robots-Tag', value: 'index, follow, max-snippet:-1, max-image-preview:large' } ] }, { // 匹配JS、JSON类资源 source: '/:path*.(js|json)', headers: [ { key: 'X-Robots-Tag', value: 'noindex, nofollow' }, { key: 'Cache-Control', value: 'public, max-age=31536000, immutable' } ] } ] } }
长缓存头配置会让Googlebot识别到静态资源无更新,不会重复发起请求占用配额。
3. 减少页面内非核心资源的爬取入口
- 关闭非首屏
next/link组件的预拉取逻辑,统一添加prefetch={false}属性,避免页面输出指向/_next/data/路径的预加载标签,从源头上减少Googlebot发现非核心JSON资源的入口 - 站点sitemap仅提交可索引的HTML页面对应路径,不要包含任何JS、JSON、静态资源地址,在Google Search Console提交sitemap后,开启「优先抓取站点地图URL」选项
4. Google Search Console后台配置校准
- 在控制台「设置-抓取设置」中,明确标注站点采用SSR服务端渲染模式,告知Googlebot无需拉取JS执行客户端渲染即可获取完整页面内容
- 定期通过「抓取统计信息」面板查看资源抓取占比,若仍有大量非核心JS/JSON请求,可通过「网址参数」工具屏蔽对应资源路径的抓取
内容的提问来源于stack exchange,提问作者Vladimir Otchenash
相关产品推荐
相关产品推荐

