首页 > 解决方案 > next.config.js 重写不在 S3 上工作,但在本地工作

问题描述

我在 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。我的存储桶静态托管配置:

S3 存储桶配置

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

提前致谢!

标签: amazon-web-servicesamazon-s3next.js

解决方案


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

相反,您需要运行next exportafter next build,然后使用serve静态服务您的 out 文件夹之类的工具:

serve out

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

我不熟悉这个withImages功能,所以我不知道这是否应该开箱即用next export。如果不是,您可能不得不玩exportPathMap- 看看下一个静态导出文档


推荐阅读