【发布时间】:2022-11-21 19:55:04
【问题描述】:
我正在使用 boazpoolman 的 strapi-sitemap-plugin 为我的 NextJs 应用程序开发站点地图。问题是我有一个嵌套的动态路由,如下所示:
/articles/[categories]/[article]
我不确定如何将此信息传递给插件。在黑暗中相当重要,但我想避免涉及为 NextJs 应用程序生成站点地图的大量开发。
【问题讨论】:
我正在使用 boazpoolman 的 strapi-sitemap-plugin 为我的 NextJs 应用程序开发站点地图。问题是我有一个嵌套的动态路由,如下所示:
/articles/[categories]/[article]
我不确定如何将此信息传递给插件。在黑暗中相当重要,但我想避免涉及为 NextJs 应用程序生成站点地图的大量开发。
【问题讨论】:
我建议您使用“iamvishnusankar”的下一个站点地图生成器。 GitHub:“https://github.com/iamvishnusankar/next-sitemap” 安装包“npm i next-sitemap”或“yarn add next-sitemap”。
在您的 ENV 文件中创建一个 SITE_URL 属性并将该值设置为您的公共域。还将这些值添加到部署设置中的环境变量中。
SITE_URL=https://my-url.com/
然后在您的根文件夹中创建一个“next-sitemap.config.js”文件并将此代码粘贴到其中。如果您有一个大型网站,请设置“sitemapSize: 7000”,否则您可以将其省略。还将更改频率设置为“每日”。
/** @type {import('next-sitemap').IConfig} */
module.exports = {
siteUrl: process.env.SITE_URL || 'https://my-url.com/',
generateRobotsTxt: true,
changefreq: 'daily',
priority: 0.7,
sitemapSize: 7000,
transform: async (config, path) => {
return {
loc: path,
changefreq: config.changefreq,
priority: config.priority,
lastmod: config.autoLastmod ? new Date().toISOString() : undefined,
alternateRefs: config.alternateRefs ?? [],
}
},
additionalPaths: async (config) => [
await config.transform(config, '/additional-page'),
],
robotsTxtOptions: {
policies: [
{
userAgent: '*',
allow: '/',
},
{
userAgent: 'test-bot',
allow: ['/path', '/path-2'],
},
{
userAgent: 'black-listed-bot',
disallow: ['/sub-path-1', '/path-2'],
},
],
additionalSitemaps: [
'https://doc.my-url.com/', //Add other releases or sub domains here
],
},
}
然后在您的公共文件夹中创建一个“robot.txt”文件,并设置您认为合适的值。这是一个示例。
# *
User-agent: *
Allow: /
# test-bot
User-agent: test-bot
Allow: /path
Allow: /path-2
# black-listed-bot
User-agent: black-listed-bot
Disallow: /sub-path-1
Disallow: /path-2
# Host
Host: https://my-url.com
# Sitemaps
Sitemap: https://my-url.com/sitemap.xml
Sitemap: https://docs.my-url.com/sitemap.xml
最后,运行“npm run build”或“yarn run build”。这将在您的公共文件夹中生成 sitemap-0.xml 和/或 sitemal.xml。
【讨论】: