nuxtjs动态生成sitemap.xml
黑猫 2022-01-25 01:41 392

为了让网站内容更好的被搜索引擎所收录,sitemap.xml是必不可少的一个环节,有利于搜索引擎更快的获取到网站内所有需要被收录的链接,nuxtjs的sitemap.xml可以通过配置进行动态生成,以确保网站内所有链接能够快速被搜索引擎所提取。

 

一、通过npm先安装sitemap

npm i @nuxtjs/sitemap -D

 

二、在nuxt.config.js的modules节点引用

export default {
    modules: [
       '@nuxtjs/sitemap'
    ],
}

 

三、在nuxt.config.js 的sitemap节点进行配置

const axios = require('axios')  //引入axios 
export default {
   sitemap: [{
      path:'/sitemap.xml' , //生成的xml文件
      hostname:'http://www.kcblogv.com/', //网站主路径
      cacheTime: 1000 * 60 * 60 * 24, //更新频率
      gzip: true,  //generate为false时才生效
      generate: false,
      exclude:[   //排除掉不想生成在.xml的页面
         '/seach'
      ],
     routes(callback){
         //通过axios获取到服务器内文章的id,及标签,或者其他想要动态生成到.xml内容链接
         axios.all([
            axios.post(comParameter.ApiUrl+'api/BlogWebsite/getArticle',{},headers),  //获取文章
            axios.post(comParameter.ApiUrl+'api/BlogWebsite/getTag',{},headers)  //获取文章标签
         ]).then(axios.spread(function(articles, tags) {
             let now = new Date();
             now.setHours(now.getHours(), now.getMinutes() - now.getTimezoneOffset());
             //创建一个数组,存放要生成链接
             let indexRoutes = [{
                    url: '/',  //这里的'/'等于前面的hostname
                    changefreq: 'daily', 
                    priority: 1, 
                    lastmodISO: now.toISOString()
              }]
             //生成文章链接
             let articleRoutes = articles.data.data.map((data) => {
                  return {
                     url: '/detail?dataid=' + data.id,
                     changefreq: 'monthly',
                     priority: 0.9,
                     lastmodISO: data.createTime
                 }
             });
            //生成标签链接
           let tagRoutes = tags.data.data.map((data) => {
              return {
                  url: '/search?tag=' + data.tagName,
                  changefreq: 'monthly',
                  priority: 0.8,
                 lastmodISO: now.toISOString()
               }
           });
          
           //最终将所有链接返回,生成sitemap.xml
           callback(null, indexRoutes.concat(articleRoutes, tagRoutes));
        })
     }
   }]
}

 

最后通过命令生成就完成啦

npm run build
npm run start

 

原文出自kcblog博客,转载请标明出处

本网站提供的文章除原创外均转载自其他网站,本网站只为更好的记录及学习技术经验
若网站内转载的文章侵犯了您的版权,请通过 意见反馈 告知本网站,我们会尽快删除相关信息
Copyright©2021-2021 kcBlog博客 版权所有 粤ICP备2021119076号 v1.0.0 栈谷统计