在后端使用“站点地图”模块为站点地图制作路由后,下一步要做什么才能在前端发现它?

问题描述

这是我为动态生成站点地图而创建的站点地图路由。现在下一步该怎么做,以便我可以看到充满链接的 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,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 documentation

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...