使用Route53+CloudFront+S3实现根域名重定向到外域子域名的HTTPS跳转问题
问题根因
从你提供的curl日志可以看到,返回HTTP协议重定向地址的是S3服务:
< HTTP/2 301 < location: http://sub.seconddomain.com/ < server: AmazonS3
你之前在S3静态网站托管里设置的「协议:https」是指S3静态网站本身的接入协议,不是重定向目标地址的协议,S3默认会给重定向目标拼接HTTP协议,所以导致跳转后变成HTTP地址。
调整步骤
1. 修改S3静态网站托管的重定向规则
不要使用简单的「请求重定向目标」配置,改用自定义重定向规则,明确指定重定向协议为HTTPS:
- 打开
firstdomain.com存储桶的「属性」页,找到「静态网站托管」配置项点击编辑 - 重定向规则选择「自定义规则」,填入以下JSON配置:
[ { "Redirect": { "HostName": "sub.seconddomain.com", "Protocol": "https", "HttpRedirectCode": "301" } } ]
- 保存配置。
2. 清理CloudFront缓存
因为301是永久重定向,CloudFront会缓存之前的重定向结果,需要手动失效所有缓存:
- 打开对应CloudFront分发的「失效」页
- 创建失效,路径填写
/*,提交后等待5-10分钟生效。
3. 验证效果
缓存失效完成后,再次访问firstdomain.com的HTTP/HTTPS地址,都会直接跳转到HTTPS的sub.seconddomain.com。
内容的提问来源于stack exchange,提问作者codeaprendiz
相关产品推荐
相关产品推荐

