将不匹配regexp的页面转发到NextJS中的另一个后端

6vl6ewon  于 2023-11-18  发布在  其他
关注(0)|答案(1)|浏览(87)

我想将NextJS应用程序与Laravel应用程序集成。
NextJS app负责路由

/
/node/123456789
/way/123456789
/relation/123456789
/install

字符串
其中123456789任何数字。
Laravel应用程序应该负责所有其他URL。
NextJS应用程序的所有页面路由看起来像这样:

const [osmtype, osmid] = all;
  const shortId =
    osmtype && osmtype.match(/^node|way|relation$/)
      ? osmtype.substr(0, 1) + osmid
      : id;

  if (!shortId) {
    return notFound();
  }


我正在尝试在next.js.js中重写
目前我有负的lookahead regexp如下所示:

rewrites: () => {
    return [
        {
          source: '/((?!node|way|relation|install):path*)',
          destination: `http://pages.example.com/:path*`,
        }
      ]
  }


但这不会匹配并调用NextJS应用程序的404页面。
我也试

source: '/((?!node|way|relation|install)):path*',


在这里,我走近了一点。
调用类似http://nextjsapp.example.com/bar的东西
会导致在pages.example.com的Apache访问日志中出现GET /r-所以不知何故:path* only捕获了最后一个字母。
我如何让它匹配完整路径并将其传递到Laravel后端?
此外,我尝试了回退重写,但由于NextJs应用程序中路由的性质,这似乎不起作用-我仍然会得到404错误。

avkwfej4

avkwfej41#

*太多了-我也不知道destionation中的反引号是从哪里来的。

source: '/((?!node|way|relation|install):path)',
destination: 'http://pages.example.com/:path',

字符串

相关问题