基于AWS S3+CloudFront部署SPA时www转非www重定向未生效问题
核心问题根因
- 为www域名配置的CloudFront分配,源节点采用了S3 API原生关联模式,该模式下CloudFront通过S3 REST API端点拉取资源,不会触发S3静态托管面板中的重定向规则,只会按照对象存储结构直接读取配置的默认根对象index.html,完全绕过桶层面的跳转逻辑。
配置修正步骤
- 调整www域名对应的CloudFront分配源配置
移除原有内置S3源,新建自定义源,源域名填写该www桶对应的静态网站托管公开端点(格式为www.example.com.s3-website-<AWS区域>.amazonaws.com,需与S3静态托管面板展示的端点完全一致),源协议策略设置为"匹配查看器",源端口选择80。该端点是S3专门用于响应静态托管、重定向规则的服务入口,只有通过该入口访问,桶配置的重定向逻辑才会生效。 - 清空该CloudFront分配的默认根对象字段
因该分配的核心作用是完成域名跳转,无静态资源托管需求,删除默认根对象配置,避免CloudFront在源返回重定向响应前,主动尝试查找桶内的index.html文件打断跳转流程。 - 校验S3重定向桶配置
确认www.example.com桶的静态网站托管重定向规则已正确开启:重定向目标设置为example.com,跳转协议选择HTTPS,无额外的请求匹配规则拦截根路径访问。 - 等待配置全局部署完成
待CloudFront分配的部署状态从"InProgress"更新为"Deployed"后,即可触发正常跳转:访问www域名时,S3静态网站端点会直接返回301永久重定向响应,将请求导向不带www的目标域名。
补充注意事项:不要将重定向的CloudFront缓存行为设置为缓存所有带任意响应码的对象,避免早期测试时缓存的index.html响应长期在边缘节点留存,覆盖后续的重定向逻辑。如果出现旧缓存残留,可以手动触发对应分配的缓存失效操作。
内容的提问来源于stack exchange,提问作者Luis Carlos
相关产品推荐
相关产品推荐

