【问题标题】:next.config.js rewrites not working on S3 but work locallynext.config.js 重写不在 S3 上工作,但在本地工作
【发布时间】:2021-05-27 05:20:45
【问题描述】:

我在 S3 上重写与在本地托管时出现了一些奇怪的行为。

我的next.config.js

module.exports = withImages({
  async rewrites() {
    return [
      {
        source: '/dashboard/:any*',
        destination: '/admin/app',
      },
      {
        source: '/env/:any*',
        destination: '/admin/app',
      },
      {
        source: '/app/:any*',
        destination: '/admin/app',
      }
    ]
  }
});

我只是将out/ 文件夹上传到 S3。我的存储桶静态托管配置:

在本地,当我运行 next buildnext start 时,我看到重定向按预期工作。但是,当部署到 S3 时,只有 /dashboard/:any* 重定向似乎有效。知道为什么会这样吗?

提前致谢!

【问题讨论】:

  • 你有没有得到这个工作?我正在尝试导出静态 Next.js 应用程序,并且仅通过没有服务器组件的 CDN 托管,同时允许动态路径。
  • @ChadJohnson 有点像。我的重写用例是移动到由 React Router 处理的动态路径。因此,对于 S3,我所做的是将错误文档设置为带有我的 React Router 路由的 Next.js 页面,这样就解决了问题。任何已经存在 S3 的页面都可以处理,因为它们与 URL 匹配

标签: amazon-web-services amazon-s3 next.js


【解决方案1】:

S3 存储桶仅适用于托管静态网站,但您使用的是 next start,它会启动可以解析动态路由的本地服务器。

相反,您需要在next build 之后运行next export,然后使用serve 之类的工具来静态提供您的输出文件夹:

serve out

这将非常接近 S3 正在做的事情,并且在部署之前测试您的 web 应用程序是否工作会更容易。

我不熟悉这个withImages 函数,所以我不知道这是否应该与next export 一起工作。如果没有,您可能不得不使用exportPathMap - 看看next documentation for static export

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-19
    • 2012-10-31
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 2021-04-26
    • 2013-03-29
    相关资源
    最近更新 更多