AWS Amplify部署的React项目Rewrite规则失效,静态文件加载失败求助
解决AWS Amplify Rewrite规则失效及静态资源加载失败问题
问题核心原因
你遇到的问题本质是被代理的React项目静态资源路径配置不匹配:默认情况下,Create React App打包后的静态资源会以根路径(/)作为基准,当通过Rewrite规则把/test/*指向另一个Amplify项目时,页面里的静态资源引用依然是目标项目的域名根路径,浏览器会直接发起跨域名请求,自然加载失败;另外Rewrite规则的匹配顺序也可能影响生效优先级。
分步解决方案
1. 修正被代理React项目的静态资源基准路径
在目标地址对应的Amplify项目(被代理的React项目)中,修改package.json,添加homepage字段:
{ "name": "your-proxied-app", "homepage": "/test/", // 其他原有配置... }
或者在项目根目录创建.env文件,添加:
PUBLIC_URL=/test/
修改完成后重新打包并部署这个项目,这样打包后的静态资源路径会自动带上/test/前缀,适配主项目的Rewrite路由结构。
2. 调整Amplify Rewrite规则的顺序与配置
- 确保你的Rewrite规则排在Amplify默认的SPA规则之前(Amplify按规则从上到下匹配,默认规则是
/*指向/index.html,会优先拦截所有路径)。 - 确认目标地址填写正确:要包含另一个Amplify项目的完整域名,比如
https://your-proxied-app.amplifyapp.com/<*>,保证Rewrite能正确转发请求到目标项目。
3. 验证生效情况
重新部署主项目后,访问/test路径:
- 查看开发者工具Network面板,静态资源的请求路径应该是当前域名的
/test/static/xxx格式,而非目标项目的独立域名。 - 页面能正常渲染,说明Rewrite规则和资源路径配置都已生效。
内容的提问来源于stack exchange,提问作者kyle ausk
相关产品推荐
相关产品推荐

