备用引用路径 (href) 中的“下一个站点地图”重复语言

Luk*_*als 5 sitemap.xml next.js

..我有一个支持多语言的 Next.js 应用程序(英语作为默认语言,德语作为辅助语言 - 英语在https://mywebsite.com上,德语在https://mywebsite.com/de上) 。

我正在使用next-sitemap备用引用来链接页面的英语和德语版本,从而为页面生成站点地图。以下是我的下一个站点地图配置:

/** @type {import('next-sitemap').IConfig} */
module.exports = {
  siteUrl: `https://mywebsite.com`,
  generateRobotsTxt: true,
  exclude: ['/app/*', '/social-redirect'],
  robotsTxtOptions: {
    policies: [
      {
        userAgent: '*',
        [process.env.VERCEL_ENV !== 'preview' && process.env.VERCEL_ENV !== 'development'
          ? 'allow'
          : 'disallow']: '/',
      },
    ],
  },
  alternateRefs: [
    {
      href: 'https://mywebsite.com',
      hreflang: 'en',
    },
    {
      href: 'https://mywebsite.com/de',
      hreflang: 'de',
    },
  ],
};
Run Code Online (Sandbox Code Playgroud)

在生成的站点地图中,站点地图的英文条目看起来不错。他们有正确的替补裁判。但在站点地图的德语条目中,备用参考在路径中具有两次语言,例如:https://mywebsite.com/de/de/blog。这是问题next-sitemap还是我做错了什么?如果有人能帮助我,我会很高兴!

Jos*_*eso 0

这也发生在我身上。我认为这是下一个站点地图的问题

就我而言,我有语言enen-gb生成的网址是:

  • <xhtml:link rel="alternate" hreflang="en" href="http://localhost:3000/en/en-gb/blog/"/>
  • <xhtml:link rel="alternate" hreflang="en-gb" href="http://localhost:3000/en-gb/en-gb/blog/"/>

您可以使用next-sitemap.config.js的 Transform 属性来配置替换

`transform: async (config, path) => {
         return { ...config,
                 loc: path.replace('/en-gb/en-gb', '/en-gb')
                } 
}
Run Code Online (Sandbox Code Playgroud)