Next.js部署后所有路由返回相同内容问题求助
问题排查与解决方案
你的问题是典型的路由路径未正确传递或Next.js配置不匹配部署环境导致的,以下是针对性排查步骤:
1. 检查AWS基础设施的路径转发配置
- 若使用ALB(应用负载均衡):确保目标组的路径转发规则是保留原始请求路径,没有将所有请求重写为
/。同时确认"转发请求到目标组"时,未修改请求的URI路径。 - 若使用CloudFront:检查行为设置中的"路径模式"是否匹配你的路由,且"转发到原点"时未修改请求路径,确保原点域名正确指向你的容器服务(ECS/EKS)。
2. 验证Next.js的basePath配置
如果你的应用部署在AWS的子域名或子路径下(比如https://your-domain.com/next-app),必须在next.config.js中添加:
module.exports = { basePath: '/next-app', // 替换为你的实际部署子路径 }
未设置basePath会导致静态资源(JS/CSS)和API路由请求根路径,触发Next.js的 fallback 路由逻辑,最终返回首页内容。
3. 检查Docker构建与启动流程
- 确认
start.sh中的启动命令正确:- 若使用默认构建:启动命令应为
npx next start -p 3000(指定端口,默认3000) - 若使用独立构建:需先在
next.config.js中开启output: 'standalone',然后启动命令为node .next/standalone/server.js
- 若使用默认构建:启动命令应为
- 你的Dockerfile中在容器内执行了
next build,可在start.sh中添加一行验证:echo "Checking build artifacts..." && ls -la /usr/src/app/.next,确保.next文件夹存在且包含构建产物。
4. 确认Next.js路由规则符合约定
- 页面路由:确保所有非首页路由都放在
pages目录下(Pages Router)或app目录下(App Router),符合Next.js的约定式路由规则。 - API路由:确认API接口都放在
pages/api目录下(Pages Router),或遵循App Router的API路由规范。
内容的提问来源于stack exchange,提问作者K.K.
相关产品推荐
相关产品推荐

