nuxt使用@nuxtjs/sitemap生成sitemap.xml

依赖于@nuxtjs/sitemap 和 axios ,如果是少量静态页面的话则不需要axios

先安装@nuxtjs/sitemap插件:

yarn add @nuxtjs/sitemap axios

然后在 nuxt.config.js 中添加配置

sitemap: {
    path: '/sitemap.xml', // sitemap文件名,不用改
    hostname: 'https://xn--nf1a578axkh.xn--fiqs8s/', // 网址
    cacheTime: 1000 * 60 * 60 * 24, // 更新频率,只在 generate: false有用
    gzip: true, // 生成 .xml.gz 压缩的 sitemap
    generate: false, // 允许使用 nuxt generate 生成
    // 排除不要页面
    exclude: [
      '/404'
    ],
    // 页面路由
    routes (callback) {
      axios.all([
        // blog 分类
        axios.get('https://blog.bg7zag.com/wp-json/xm-blog/v1/menu'),
        // 文章列表
        axios.get('https://blog.bg7zag.com/wp-json/wp/v2/posts', {
          params: {
            page: 1,
            per_page: 100,
            _embed: true
          },
          data: { progress: false }
        }),
        // 标签
        axios.get('https://blog.bg7zag.com/wp-json/xm-blog/v1/info')

      ]).then(axios.spread(function (menu, posts, info) {
        let now = new Date();
        now.setHours(now.getHours(), now.getMinutes() - now.getTimezoneOffset());
        let indexRoutes = [
          {
            url: '/',
            changefreq: 'daily',
            priority: 1,
            lastmodISO: now.toISOString()
          }
        ]
        let menuRoutes = menu.data.mainMenu.map((data) => {
          let url = ''
          if (data.object === 'category') {
            url = '/category/1?type=' + data.object_id + '&title=' + data.title
          }
          if (data.object === 'page') {
            url = '/page/' + data.object_id
          }
          if (data.object === 'post_tag') {
            url = '/tags/1?type=' + data.term_id + '&title=' + data.name
          }
          if (data.object === 'custom') {
            url = data.url
          }
          return {
            url: url,
            changefreq: 'monthly',
            priority: 0.8,
            lastmodISO: data.post_modified
          }
        });
        let postsRoutes = posts.data.map((data) => {
          return {
            url: '/' + data.id,
            changefreq: 'daily',
            priority: 0.9,
            lastmodISO: data.modified
          }
        });
        let tagsRoutes = info.data.tagCloud.map((data) => {
          return {
            url: `/tags/1?type=${data.term_id}&title=${data.name}`,
            changefreq: 'weekly',
            priority: 0.7,
            lastmodISO: now
          }
        })
        // 用 concat 進行合併
        callback(null, indexRoutes.concat(menuRoutes, postsRoutes, tagsRoutes));
      }), function (err) {
        throw (err);
      });
    }
  }

参考文献:Nuxt教學:快速建立Nuxt網站地圖 Sitemap

评论

  1. yokochen
    Macintosh Chrome 101.0.4951.64
    3 年前
    2022-5-25 20:41:59

    遇到落地页 例如 资讯 详情页面,几十万条数据 如何做 多个sitemap呢? 如何分页?

    • 博主
      yokochen
      Windows Chrome 101.0.4951.67
      3 年前
      2022-5-26 9:32:53

      我这边只展示前一百条文章,多sitemap不一定能支持,而且这个插件已经停止维护多年了。
      我觉得sitemap展示最新多少条就够了,多了也没多大效果。给蜘蛛提供最新的部分就可以了

  2. Windows Chrome 98.0.4758.102
    3 年前
    2022-4-07 8:49:04

    好用![ciya]

  3. Windows Chrome 87.0.4280.141
    4 年前
    2021-2-21 20:34:35

    我照着做了一遍,但是访问的时候是404,请问博主知道解决办法嘛?? [doge1] [kelian]

    • 博主
      卡伊德
      Linux Chrome 88.0.4324.150
      4 年前
      2021-2-22 8:45:15

      我看你的网站不是正常访问sitemap.xml吗?

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇