Nuxt项目中使用i18n插件无法移除/admin路由前缀的问题
Nuxt项目中使用i18n插件无法移除/admin路由前缀的问题
我完全懂你现在的困扰——用Nuxt i18n的prefix策略时,默认语言ro-RO的前缀会自动加到/admin路由上,而且之前文档里提到的parsePages选项现在找不到了,对吧?别着急,我给你推荐几个官方现在更推荐的解决办法:
方法一:用i18n的pages配置项精准控制
现在parsePages被移除后,Nuxt i18n推荐通过pages配置字段来单独指定某些页面不需要语言前缀。你可以在nuxt.config.ts的i18n配置里添加这个规则,专门针对/admin路径下的所有页面:
export default defineNuxtConfig({ // 你的现有配置... modules: [ '@pinia/nuxt', 'pinia-plugin-persistedstate/nuxt', '@nuxtjs/i18n', // 确保这个模块已添加 ], i18n: { strategy: 'prefix', defaultLocale: 'ro-RO', locales: [ { code: 'ro', iso: 'ro-RO', name: 'Română' }, { code: 'en', iso: 'en-US', name: 'English' } ], // 关键配置:让/admin下的所有页面都不添加语言前缀 pages: { 'admin/**': { ro: false, en: false } } }, $development: { devServer: { host: '0.0.0.0', port: 3000, }, // 开发环境的模块配置可以保留,但建议i18n的核心配置放到全局 modules: [ '@pinia/nuxt', 'pinia-plugin-persistedstate/nuxt', '@nuxtjs/i18n', ], // ...其他开发环境配置 } })
这个配置的逻辑很简单:admin/**是通配符,能匹配/admin下的所有子页面,给ro和en都设为false,就表示这两个语言下,这些页面都不会自动添加语言前缀。不管当前是默认的罗马尼亚语还是英语,访问/admin都直接生效,不会变成/ro/admin或者/en/admin。
注意事项
- 记得修改配置后重启开发服务器,不然配置可能不会生效;
- 确保你用的是最新版的
@nuxtjs/i18n,旧版本的配置逻辑可能不一样; - 如果生产环境也需要这个规则,别把i18n的配置只放到
$development块里,要放到全局配置中。
备注:内容来源于stack exchange,提问作者Misu Stefan
相关产品推荐
相关产品推荐

