在后端使用"站点地图"模块为站点地图创建路线后,下一步该怎么做才能在前端发现它?



这是我为动态生成站点地图而创建的站点地图路线。现在下一步该怎么做,这样我就可以看到sitema.xml中的链接

sitemap.js

const { SitemapStream, streamToPromise } = require ('sitemap');
const express = require ('express');
const router = express.Router();
const Job = require ('../models/Job');
const PrivateJob =require ('../models/PrivateJob');


let sitemap;
router.get('/sitemap.xml',async(req,res)=>{
try {
const list= Job.find().select('slug');
const listPvt= PrivateJob.find().select('slug');

const jobs = list.map( ({ slug }) => `/jobs/${slug}`);
const privateJobs = listPvt.map( ({ slug }) => `/privateJobs/${slug}`);
const smStream = new SitemapStream({ hostname: 'http://localhost:3000/' })
const pipeline = smStream.pipe(createGzip());
jobs.forEach(function(item1) {
// Update as required
smStream.write({ url: item1, changefreq: 'weekly', priority: 0.8})
});
privateJobs.forEach(function(item2) {
// Update as required
smStream.write({ url: item2, changefreq: 'weekly', priority: 0.6})
});
streamToPromise(pipeline).then(sm => sitemap = sm)

smStream.end()
// Show errors and response
pipeline.pipe(res).on('error', (e) => {throw e})

} catch (err) {
console.error(e)
res.status(500).end()
}
})
module.exports = router;

下一步该怎么做,这样它就可以在前端被发现,因为我在前端上使用next.js

静态资产通过任何nextjs应用程序中的public目录提供服务。sitemap.xml也是一个静态资产,因此您可以将其放置在公用文件夹中,搜索引擎可以使用:<YOUR_DOMAIN>/sitemap.xml访问它。

有关nextjs文档的更多信息。

Nextjs不会自动创建sitemap.xml。也许你可以在构建项目后编写一个prebuild脚本来生成网站地图。为此,您可以尝试使用nextjs站点地图生成器。

最新更新