Muestro mi sitio web en dos idiomas: francés e inglés. Construí mi mapa del sitio y me di cuenta en lugar de tener en mi sitemap.xml esto:
/blog /en-US/blogTengo :
/fr-FR/blog /en-US/blog Me gustaría eliminar la cadena fr-FR de mis mapas de sitio porque provoca una duplicación de la página que es mala para el SEO. ¿Cómo puedo hacer eso? También, ¿cómo indicar páginas canónicas en un XML?
Aquí está mi configuración i18n:
i18n: { locales: ["fr-FR", "en-US"], defaultLocale: "fr-FR" } Y mis getStaticPaths ven así:
export async function getStaticPaths({ locales }) { const products = await fetchAPI(`/products`); const productsData = await products; const resProductsEn = await fetchAPI(`/products?${enTranslation}`); const productsDataEn = await resProductsEn; const paths = [] productsData.map((product) => paths.push( { params: { slug : product.slug} } )) productsDataEn.map((product) => paths.push( { params: { slug : product.slug}, locale: 'en-US'} )) return { paths, fallback: true }; } Uso next-sitemap para generar mi sitemap - next-sitemap.config :
module.exports = { siteUrl: process.env.FRONT_END_URL, generateRobotsTxt: true, exclude: [ '/test', '/commande', '/forgotten-password', '/reset-password', '/panier', '/mon-compte', '/mon-compte/*', '/fr-FR', ], robotsTxtOptions: { additionalSitemaps: [ `${process.env.FRONT_END_URL}/sitemap.xml`, `${process.env.FRONT_END_URL}/server-sitemap.xml`, `${process.env.FRONT_END_URL}/en-server-sitemap.xml` ] } }Un ejemplo más concreto:
<url><loc>https://www.website.com/fr-FR/questions-reponses</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2021-12-03T18:26:08.673Z</lastmod></url> <url><loc>https://www.website.com/en-US/questions-reponses</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2021-12-03T18:26:08.673Z</lastmod></url>Puede usar la propiedad transform en next-sitemap.js para eliminar la configuración regional predeterminada de las rutas generadas.
module.exports = { // Other `next-sitemap.js` config here transform: async (config, path) => { return { loc: path.replace('/fr-FR', ''), // Remove `/fr-FR` from paths - could get value from i18n config to make it dynamic changefreq: config.changefreq, priority: config.priority, lastmod: config.autoLastmod ? new Date().toISOString() : undefined, alternateRefs: config.alternateRefs ?? [] } } }