Internationalization 部署Nextjs应用程序后vercel上的错误重定向太多
我将我的nextjs应用程序部署到了Vercel,结果非常成功 我可以看到该网站的预览,甚至可以看到日志说它运行良好 但我尝试通过默认的Vercel域访问该网站: 我得到了一个错误\u太多的重定向 我在本地没有此问题。 我试过:Internationalization 部署Nextjs应用程序后vercel上的错误重定向太多,internationalization,next.js,i18next,vercel,Internationalization,Next.js,I18next,Vercel,我将我的nextjs应用程序部署到了Vercel,结果非常成功 我可以看到该网站的预览,甚至可以看到日志说它运行良好 但我尝试通过默认的Vercel域访问该网站: 我得到了一个错误\u太多的重定向 我在本地没有此问题。 我试过: 禁用我使用的语言重定向(/en适用于英国人,和/适用于法国人) 禁用i18next的语言检测器 但这些解决方案都没有改变任何事情。 有什么想法吗 i18n.js文件 从“i18next”导入i18n; 从'react-i18next'导入{initReactI1
- 禁用我使用的语言重定向(/en适用于英国人,和/适用于法国人)
- 禁用i18next的语言检测器
从“i18next”导入i18n;
从'react-i18next'导入{initReactI18next};
从“i18next localstorage Cache”导入缓存;
从“i18next browser LanguageDetector”导入LanguageDetector;
const fallbackLng=['fr'];
const availableLanguages=['fr','en'];
const en=require('./locales/en/common.json');
const fr=require('./locales/fr/common.json');
常量选项={
订单:['querystring','navigator'],
lookupQuerystring:“液化天然气”
}
常量缓存选项={
//打开或关闭
启用:对,
//存储语言的前缀
前缀:“i18next_res_”,
//到期日
到期时间:365*24*60*60*1000,
//语言版本
//版本:{}
}
i18n
.使用(缓存)
.使用(initReactI18next)
.使用(语言检测器)
.init({
缓存:缓存选项,
撤退:撤退,
是的,
检测:选项,
支持的语言:可用的语言,
非明确支持:是的,
资源:{
en:{翻译:en},
fr:{翻译:fr},
},
插值:{
逃避价值:错,
},
反应:{
等等:是的,
悬念:是的,
},
});
导出默认i18n代码>服务器上发生的情况如下:
您输入并将其重定向到/en,HTTP状态代码为307(临时重定向)
使用301(永久重定向)和/en重定向到/
您可以通过打开浏览器开发工具并查看网络
选项卡来重现这一点
可能是,您在服务器上激活了某种url重写,它将所有内容重定向到您的域根。是否有可用于此的公共回购?这就是它对我的作用
尝试更改区域设置和默认区域设置的顺序(不确定这是否有帮助,但它为我更改了一些内容。如果是这种情况,则为Undocumented!)
因此,我在区域设置
数组和域
数组中首先放置默认区域设置(对我来说是nl)
如果有帮助,请告诉我
module.exports = {
i18n: {
localeDetection: false,
// These are all the locales you want to support in
// your application
locales: ['nl', 'en'],
// This is the default locale you want to be used when visiting
// a non-locale prefixed path e.g. `/hello`
defaultLocale: 'nl',
// This is a list of locale domains and the default locale they
// should handle (these are only required when setting up domain routing)
domains: [
{
domain: 'example.be',
defaultLocale: 'nl',
},
{
domain: 'example.com',
defaultLocale: 'en',
},
],
},
trailingSlash: true,
};
我将所有getInitialProps更改为getServerSideProps
我意识到我在做一个回应重定向:
res.writeHead(301,{Location:“/”})
感谢您的回答,这很有帮助!我问过Vercel,但他们需要一周的时间来回答。。。你认为这是我可以在我的代码中改变的东西吗,或者可能通过使用自定义域来改变吗?谢谢你的回答,但它不会改变任何东西。我刚试过。正如我所说,我的代码在本地工作得非常好,当我在服务器上部署它时,我遇到了重定向问题。您的回答提到了一个解决方案,根据提供的信息,其他用户无法找到该解决方案。