AWS CloudFront+Nuxt子路径直接访问失效问题求助
解决思路
- 检查S3静态网站托管配置:确保S3桶的静态网站托管已开启,且索引文档设为
index.html。同时确认Nuxt静态生成后,子路径(如/page/question)对应的page/question/index.html文件已正确上传到S3——CloudFront请求/page/question时,S3需要通过索引文档配置自动映射到该路径下的index.html。 - 配置CloudFront自定义错误响应:在CloudFront分发的错误页面设置中添加两条规则:
- 错误代码
403,响应路径设为/index.html,返回HTTP状态码200 - 错误代码
404,响应路径设为/index.html,返回HTTP状态码200
这一步是让CloudFront把S3返回的403/404错误,替换为Nuxt的入口文件,由Nuxt客户端路由处理子路径跳转。
- 错误代码
- 验证CloudFront Origin权限:如果使用Origin Access Control(OAC),检查S3桶策略是否正确授权CloudFront访问桶内所有对象(包括子路径下的文件)。错误的权限配置会导致CloudFront无法获取S3对象,直接返回403。
- 检查CloudFront缓存行为:确保缓存行为的路径模式覆盖所有子路径(比如
/*),同时确认没有开启不必要的查看器访问限制,避免拦截合法请求。 - 确认Nuxt静态生成设置:在
nuxt.config.js中确保target: 'static',且generate.routes已配置所有需要预生成的子路径,保证每个页面的静态文件都能正确生成并上传到S3。
内容的提问来源于stack exchange,提问作者emilie zawadzki
相关产品推荐
相关产品推荐

