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

基于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
欢迎关注作者原文:原文地址:https://www.9cka.cn/study/13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值