Условные перенаправления в NextJS
Контекст: у меня есть блог с большим количеством контента, проиндексированного Google. Например, весь контент индексируется как www.site.com/post1 . Я переношу свой блог на NextJS, и я разместил сообщения в блоге на www.site.com/blog/post1 . Я смог легко использовать перенаправления с 301 для поддержки SEO для этих сообщений в блоге. Однако я с проблемой, когда ссылки типа столкнулсяwww.site.com/sitemap.xml также перенаправляются на www.site.com/blog/sitemap.xml . Есть ли способ перенаправить, только если шаблон не соответствует какому-то пути? Вот мой раздел о перенаправлениях в next.config.js
async redirects() {
return [
{
source: '/:slug',
destination: '/blog/:slug',
permanent: true// Matched parameters can be used in the destination
},
{
source: '/sitemap.xml',
destination: '/sitemap.xml',
permanent: false// Matched parameters can be used in the destination
}
]
}
1 ответ
Я бы подумал, что порядок имеет значение, пробовали ли вы сначала поставить правило карты сайта?
async redirects() {
return [
{
source: '/sitemap.xml',
destination: '/sitemap.xml',
permanent: false// Matched parameters can be used in the destination
},
{
source: '/:slug',
destination: '/blog/:slug',
permanent: true// Matched parameters can be used in the destination
}
]
}
В противном случае может потребоваться использовать регулярное выражение
async redirects() {
return [
{
source: `/:slug(^((?!sitemap\.xml).)*$)`,
destination: '/blog/:slug',
permanent: true// Matched parameters can be used in the destination
},
{
source: '/sitemap.xml',
destination: '/sitemap.xml',
permanent: false// Matched parameters can be used in the destination
}
]
}