基于Koa2自动生成sitemap网站地图方便搜索引擎收录SEO

2020-3-28 21:50:26
学习记录
140

基于Koa2自动生成sitemap网站地图方便搜索引擎收录SEO

sitemap是一种高级流式生成Sitemap的库/ CLI,它使创建Sitemap XML文件变得容易,本文主要讲解基于koa2生成网站sitemap.xml,并进行封窗。

需要使用的sitemap包,sitemap包可以生成sitemap.xml文件,方便我们网站做seo收录优化

搭建服务器环境

const Koa = require('koa'); const app = new Koa(); app.listen(3000); console.log('启动成功:http://localhost:3000');

生成sitemap.xml文件

const Koa = require('koa'); const { SitemapStream } = require('sitemap'); const fs = require('fs'); const app = new Koa(); app.use((ctx,next)=>{ if(ctx.url === '/addsitemap'){ let smStream = new SitemapStream({hostname:'http://localhost'}); let mySitemap = fs.createWriteStream('sitemap.xml'); smStream.pipe(mySitemap); smStream.write({ url: '/page-1/', changefreq: 'daily', priority: 0.3 }); smStream.end(); smStream.on('finish',()=>{ ctx.body = '生成sitemap.xml成功'; }) } }) app.listen(3000); console.log('启动成功:http://localhost:3000');

首先引入sitemap的sitemapStream,然后新建一个SitemapStream,通过hostname配置一个跟域名,配置之后,接下来写入smStream的信息都可以自动的添加根域名。创建可读流sitemap.xml, 并把smStream的信息放入其中。

读取sitemap.xml文件

const { SitemapStream, streamToPromise, XMLToSitemapItemStream } = require('sitemap'); ...code 其他的代码 if(ctx.url === '/addsitemap'){ } else if (ctx.url === '/sitemap.xml') { let sm = new SitemapStream(); fs.createReadStream('sitemap.xml') .pipe(new XMLToSitemapItemStream()) .pipe(sm) let res = await streamToPromise(sm); ctx.set('Content-Type', 'application/xml') ctx.body = res; }

首先引入XMLToSitemapItemStream用来读取xml文件流,并转换成sitemap包需要的格式,然后再传递给sm ,利用streamToPromise,可以把sm流转换成buffer。

最后我们设置一下相应头为application/xmlbody返回转换后到buffer即可

后续会出一篇关于一篇关于封装基于koa2的sitemp包的文章,敬请关注。

基于Koa2自动生成sitemap网站地图方便搜索引擎收录SEO

avatar

Sky(小新)

个人签名: 提升能力,创造价值!

江苏-南京
skylpz@qq.com