NextJs站点地图去重:两款生成包的精准配置方法
解决Next.js站点地图去重问题
一、使用nextjs-sitemap-generator时的处理方法
你遇到的问题是因为ignoredPaths的字符串匹配是包含匹配,比如'/security'会匹配所有带这个子串的路径,包括/about/security。要实现精确匹配根路径的/security,改用正则表达式指定忽略规则即可:
const sitemapGenerator = require('nextjs-sitemap-generator'); sitemapGenerator({ // 其他配置项... ignoredPaths: [/^\/security$/], // 仅精确匹配根路径的/security });
正则/^\/security$/的含义是:路径必须完全等于/security,这样只会排除根路径的目标链接,不会影响/about/security。
二、使用next-sitemap时的处理方法
next-sitemap提供两种简单方式实现需求:
1. 直接用exclude选项
next-sitemap的exclude数组默认是精确匹配路径,直接添加'/security'就能只排除根路径的链接,不会干扰/about/security:
// next-sitemap.config.js module.exports = { siteUrl: 'http://localhost', exclude: ['/security'], // 精确排除根路径的/security // 其他配置项... };
2. 用transform函数自定义过滤
如果需要更复杂的过滤逻辑,可通过transform函数手动判断并剔除指定路径:
// next-sitemap.config.js module.exports = { siteUrl: 'http://localhost', transform: async (config, path) => { // 路径为根路径/security时返回null,即可排除该链接 if (path === '/security') { return null; } // 其他路径按正常规则生成站点地图条目 return { loc: path, changefreq: config.changefreq, priority: config.priority, lastmod: config.autoLastmod ? new Date().toISOString() : undefined, }; }, // 其他配置项... };
内容的提问来源于stack exchange,提问作者Shruthi R
相关产品推荐
相关产品推荐

