使用@nuxtjs/sitemap给项目添加sitemap(网站地图)

yarn add @nuxtjs/sitemap -D
npm i @nuxtjs/sitemap -D
cnpm i @nuxtjs/sitemap -D

在项目根目录下找到 nuxt.config.jsmodules添加'@nuxtjs/sitemap'

在项目目录下新建config文件夹,创建sitemap.js文件写入

nuxt.config.js导入sitemap.js。并添加 sitemap项,在浏览器输入项目的sitemap地址即可

解决nuxt生成的sitemap.xml文件日期格式问题(YYYY-MM-DD)

使用dayjs格式化时间,如果出现格式化时间还是显示ISO时间格式那么需要到sitemap源码查看时间是否被转换了!

找到@nuxtjs/sitemap包, 注释掉smi.lastmod = (new Date(smiLoose.lastmod)).toISOString();

node_modules\sitemap\dist\lib\sitemap.js注释上面的代码,因为他会自动把时间转换成ISO-8601时间格式。 如果没有找到node_modules\sitemap\dist\lib\sitemap.js,那就从node_modules\@nuxtjs文件夹里找.

如何生成多个sitemap.xml文件?

./config/sitemap.js 中定义的sitemap 使用数组形式.

const sitemap = [
    {
        path: '/sitemap.xml', // 生成的文件路径
        hostname: 'https://baidu.com/', // 网址
        cacheTime: 1000 * 60 * 60 * 24, // 1天 更新频率,只在 generate: false有用
        gzip: true, // 生成 .xml.gz 压缩的 sitemap
        generate: false, // 允许使用 nuxt generate 生成
        // 排除不要页面
        exclude: [
            '/404' //  这里的路径相对 hostname
        ],
        // xml默认的配置
        defaults: {
            changefreq: 'always',
            lastmod: new Date()
        },
        // 需要生成的xml数据, return 返回需要给出的xml数据
        routes: () => {
            const routes = [
                {
                    url: "/",  //  这里的路径相对 hostname
                    changefreq: "always",
                    lastmod: new Date()
                },
                {
                    url: "/helloword",
                    changefreq: "always",
                    lastmod: "2020-12-04"
                }
            ]
            return routes
        }
    },
    {
        path: '/test/sitemap.xml', // 生成的文件路径
        hostname: 'https://baidu.com/', // 网址
        cacheTime: 1000 * 60 * 60 * 24, // 1天 更新频率,只在 generate: false有用
        gzip: true, // 生成 .xml.gz 压缩的 sitemap
        generate: false, // 允许使用 nuxt generate 生成
        // 排除不要页面
        exclude: [
            '/404' //  这里的路径相对 hostname
        ],
        // xml默认的配置
        defaults: {
            changefreq: 'always',
            lastmod: new Date()
        },
        // 需要生成的xml数据, return 返回需要给出的xml数据
        routes: () => {
            const routes = [
                {
                    url: "/test",  //  这里的路径相对 hostname
                    changefreq: "always",
                    lastmod: new Date()
                },
                {
                    url: "/test/helloword",
                    changefreq: "always",
                    lastmod: "2020-12-04"
                }
            ]
            return routes
        }
    }
]

export default sitemap

和后端配合生成更多的url数据拼接url,使用axios请求获取列表数据等等....

重写sitemap.js,使用请求获取url数据

import axios from "axios"
const sitemap = {
    path: '/sitemap.xml', // 生成的文件路径
    hostname: 'https://baidu.com/', // 网址
    cacheTime: 1000 * 60 * 60 * 24, // 1天 更新频率,只在 generate: false有用
    gzip: true, // 生成 .xml.gz 压缩的 sitemap
    generate: false, // 允许使用 nuxt generate 生成
    // 排除不要页面
    exclude: [
        '/404' //  这里的路径相对 hostname
    ],
    // xml默认的配置
    defaults: {
        changefreq: 'always',
        lastmod: new Date()
    },
    // 需要生成的xml数据, return 返回需要给出的xml数据
    routes: async () => {

        // 从后台获取数据,拼接url生成更多的xml数据
        const getUrl = 'https://******'
        const { data } = await axios.get(getUrl)
        const routes = [
            {
                url: "/",  //  这里的路径相对 hostname
                changefreq: "always",
                lastmod: new Date()
            },
            {
                url: "/helloword",
                changefreq: "always",
                lastmod: "2020-12-04"
            }
        ]
        if (data && data.list) {
            let arr = data.list.map(item => ({
                url: "/blog/" + item.id,
                lastmod: item.update_time,
                changefreq: "yearly"
            }))
            routes.concat(arr)
        }

        return routes
    }
}

export default sitemap
(0)

相关推荐

  • NuxtJS快速入门

    服务器端渲染(SSR) 知识储备 ES6 Nodejs Vue React Angular 什么是服务器端渲染 前端渲染:html页面作为静态文件存在,前端请求时后端不对该文件做任何内容上的修改,直接 ...

  • sitemap的详细用法和需求解析

    Sitemap 标准化 1.建立www.xxxxx.cn/sitemap/goods.xml  将所有产品详情页url放入文件中  (每天凌晨 空闲的时间更新一次 ) 2.建立www.xxxxx.cn ...

  • nuxt中使用Vuex

    问题 如何在nuxt中使用Vuex? 以官网例子, 模块方式引用--计数器为例子 图1 计数器示例 目录结构 图2 目录结构 js模块写法 // user.js // state为一个函数, 注意箭头 ...

  • 为什么360里面添加了sitemap.xml 没有抓取到链接

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/为什么360里面添加了sitemap.xml 没有抓取到链接 作者:融水公子 rsgz 搜索引擎教程 搜索引擎教程 http://www.rsgz ...

  • ecshop如何生成商城站点地图

    ecshop 如何生成站点地图? 1.你可以通过自己写程序.调用ecs_goods,ecs_article等栏目的数据,你可以可以直接自己做成静态的HTML页面. 2.大家知道ecshop默认的sit ...

  • .Net生成站点sitemap供百度抓取的类和使用

    我对sitemap介绍:百度的sitemap说明地址:http://zhanzhang.baidu.com/wiki/93#01SiteMap作用:利于百度搜索举例说明:https://www.xia ...

  • Keil项目添加源文件和头文件的方法做个记录:

    在此把Keil项目添加源文件和头文件的方法做个记录: 1. Keil项目添加源文件和头文件的方法之一 1.1 右键点击项目名称,弹出菜单中选择Add Group...,我们把所有需要添加的源文件都放在 ...

  • 怎么添加英文版网站版本?这里支持22种语言!

    随着互联网的不断发展与数字化商业的普及,越来越多的公司不再只把目光放在国内,转而开始面向全球销售市场. 这些企业有大有小,大企业或许会在当地选择驻点开设分公司,但这对于部分中小型企业来说还是比较吃力的 ...

  • 实用技能 | 添加在线自定义地图时的几种特殊情况

    今天给大家讲述的是在添加在线自定义地图时可能会遇到的几种特殊情况: 一种是针对能有效使用,但易添加失败的地图资源:一种是由于网站限制,无法按正常手段添加的地图资源. 也算是为大家在自行寻找并添加自定义 ...

  • 实用技能 | 如何在奥维中添加在线自定义地图

    大家新年好!今天我用视频的方式来为大家详细介绍一下如何在奥维中添加在线自定义地图. 大家新年好!今天我用视频的方式来为大家详细介绍一下如何在奥维中添加在线自定义地图.

  • 征图考证官方网站地图

    html网站地图 网站首页2021-08-09 学院文化2021-08-09 公益事业2021-08-09 新闻营销2021-08-09 精英加盟2021-08-09 关于我们2021-08-09 网 ...

  • 网站地图有利于SEO优化吗?

    网站地图,顾名思义就是网站的地图,帮助搜索引擎了解网站的结构,更智能地抓取网站.如果你的站点地图能帮助搜索引擎蜘蛛更好地理解它,那将更有利于网站的收录.那么,网站地图应该怎么做来优化SEO呢? 编辑搜 ...

  • SEO人员,需要HTML版本网站地图4个理由

    如果你长期运营一个独立网站,你会发现草根SEO人员,经常是在利用碎片化时间去更新站点内容,相对于一个独立博客而言,他的站内信息流动实际上是相对"混乱"的. 甚至随着时间的推移,连自 ...

  • 网站地图制作_sitemap自动生成方法详解

    seospsa · 2019-03-03 2019/03/03 · SEO基础 · 网站地图是站长们手动或者利用地图生成工具生成的,用来增加搜索引擎友好度,提高蜘蛛的工作效率以及用户体验.通常有htm ...