You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用gatsby-plugin-sitemap将PDF静态文件加入Gatsby的sitemap.xml

解决方案

你只需要在resolvePages方法中接收GraphQL返回的查询结果,将PDF文件的publicURL映射为sitemap要求的path字段即可,完整配置参考如下:

{
  resolve: `gatsby-plugin-sitemap`,
  options: {
    query: `
    {
      allFile(filter: {extension: {eq: "pdf"}}) {
        nodes {
          publicURL
          # 可选:如果需要指定PDF的更新时间,可新增modifiedTime字段
          modifiedTime
        }
      }
      # 可选:如果需要同时保留站点原有普通页面的sitemap收录,补充下面的查询
      allSitePage {
        nodes {
          path
        }
      }
    }
    `,
    resolvePages: ({ allFile, allSitePage }) => {
      // 映射PDF为符合要求的sitemap页面对象
      const pdfPages = allFile.nodes.map(node => ({
        path: node.publicURL,
        // 可选:自定义配置更新时间、更新频率、收录优先级
        // lastmod: node.modifiedTime,
        // changefreq: 'monthly',
        // priority: 0.7
      }))
      
      // 可选:如果要合并原有普通页面到sitemap,保留下面这行
      const sitePages = allSitePage?.nodes || []
      
      // 返回所有需要收录的页面对象
      return [...sitePages, ...pdfPages]
    },
  }
}

注意事项

  • 页面对象的path是必填字段,对应资源相对站点根目录的路径,gatsby-plugin-sitemap会自动拼接你预先配置的站点域名生成完整的sitemap URL
  • 如果你只需要收录PDF文件,删除上面关于allSitePage的查询和合并逻辑即可
  • 如果你需要对PDF和普通页面配置不同的收录规则,可以分别给两类对象设置不同的changefreq、priority等参数

内容的提问来源于stack exchange,提问作者Shouichi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:15:03