您可以使用express-sitemap
来生成站点地图。
自动生成站点地图
var sitemap = require('express-sitemap')();
var app = require('express')();
sitemap.generate(app);
生成动态内容的方式
例如,如果您有产品页面并为它们指定了URL,
您可以每次创建一个动态文件并将其放置在公共文件夹中。
const Product = require('./model/product')
const sitemap = require('sitemap');
let sitemapData;
const generateSitemap = async () => {
const products = await Product.find({},{path: 1});
const urls = products.map({path} => `/products/${path}`)
sitemapData = sitemap.createSitemap ({
hostname: 'http://example.com',
cacheTime: 600000,
urls
});
}
您可以在例行程序或cron中使用此函数,并定期生成网站地图。
setInterval(generateSitemap, 360000)
您可以做的另一件事是:
使用
sitemapData
变量并执行以下操作。
sitemapData.add({url: '/product-a/'}); // when some product is added
sitemapData.add({url: '/product-b/', changefreq: 'monthly', priority: 0.7});
sitemapData.del({url: '/product-c/'}); // when something is removed
sitemapData.del('/product-d/');
你可以像这样在路由中使用它:
app.get('/sitemap.xml', function(req, res) {
sitemapData.toXML( function (err, xml) {
if (err) {
return res.status(500).end();
}
res.header('Content-Type', 'application/xml');
res.send( xml );
});
});