You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 12:49:38