javascript - Next.js 应用程序在带有 basePath 的子文件夹中,如何使主页在 basePath 之外可用?

标签 javascript node.js next.js next-router

我的 Next.js 应用程序在“/portal/”文件夹中运行,basePath 设置如下:

module.exports = {
    basePath: '/portal'
}

现在我需要该应用程序的索引页面在站点根目录中也可用(没有 basePath)。这样 '/' 和/portal/*' 都将由 Next.js 应用程序处理,而其他路由则由另一个网络应用程序处理。在 Nginx 端,根路由被传递给 Next.js 应用程序,但不清楚如何在 basePath 之外提供页面。我试过重写:

async rewrites() {
    return [
        {
            source: '/',
            destination: '/portal/',
            basePath: false
        },
    ];
},

但出现错误:路由/重写 basePath 之外的 url。请使用以“http://”或“https://”开头的目的地 https://nextjs.org/docs/messages/invalid-external-rewrite 是否可以在 basePath 之外提供一个页面,或者唯一的方法是删除 basePath 并手动更改 Next.js 应用程序中的所有路径和链接?

最佳答案

可能使用 Redirects可能对您的情况有所帮助。

module.exports = {
  basePath: '/portal',
  async rewrites() {
  return [
          {
              source: '/',
              destination: '/portal/',
              basePath: false
          },
      ];
  },
  async redirects() {
    return [
      {
        source: '/with-basePath', // automatically becomes /portal/with-basePath
        destination: '/another', // automatically becomes /portal/another
        permanent: false,
      },
      {
        // does not add /docs since basePath: false is set
        source: '/without-basePath',
        destination: '/another',
        basePath: false,
        permanent: false,
      },
    ]
  },
}

关于javascript - Next.js 应用程序在带有 basePath 的子文件夹中,如何使主页在 basePath 之外可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71146752/

相关文章:

javascript - 添加或删除文本框,然后使用 PHP 或 Jquery 获取其值

javascript - jQuery 时间选择器和 jQuery 日期对 : setting a maximum duration (delta)

node.js - 在 mac 上安装 JSDOM 的问题

html - 如何在页面的所有语言和区域变体的标题中动态创建 HTML 标签?

javascript - 由于 SSR,Reactotron 无法与 NextJS 一起使用

javascript - 按下按钮时调用js函数

javascript - Angularjs:在 ng-repeat 中过滤多个条件

javascript - 如何将 ids 列表传递给 mysql 从 NodeJs 删除查询

python - 如何使用 sudo 权限在 Node.js 中执行 Python 脚本

reactjs - 从 nextjs 应用程序中检索一个驱动器中的文件