AWS S3 www域名转根域名重定向异常问题咨询
首先明确:这不是预期行为,问题核心出在DNS配置的缺失上,下面我一步步拆解原因和解决办法:
为什么重定向指向了停放的abc.com?
当你在www.abc.com的S3桶里配置重定向到abc.com时,S3的重定向逻辑是:访问www桶端点的请求,会被返回一个HTTP重定向响应,目标地址是你指定的abc.com域名。但此时你的abc.com域名还没配置DNS记录指向它的S3静态网站端点,浏览器解析abc.com时会使用注册商默认的DNS(也就是停放状态的DNS),自然就跳转到了停放页面。
为什么无法直接重定向到abc.com存储桶?
S3的静态网站重定向功能是基于域名层级的配置,而非直接关联另一个S3桶。你其实可以把重定向目标设为abc.com桶的S3网站端点(比如abc.com.s3-website-us-east-1.amazonaws.com),但官方更推荐用域名做重定向——这样后续如果更换托管服务(比如改成CloudFront),不需要修改S3的重定向配置,只调整DNS即可。但当前的核心问题还是:你访问的是www桶的S3端点,而重定向的目标域名没有正确解析到对应的S3桶。
是否需要配置Route 53(或其他DNS服务)才能生效?
是的,必须配置DNS记录,不管你用Route 53还是第三方DNS服务商,这是让域名和S3桶关联的关键步骤:
- 对于
abc.com(根域名):创建一条A记录或AAAA记录(IPv6),将其指向对应的S3静态网站端点(注意是网站端点,不是S3的REST API端点)。如果用Route 53,还可以使用别名记录直接关联到S3桶的网站端点,稳定性更好。 - 对于
www.abc.com:可以创建一条CNAME记录指向它的S3网站端点,或者用Route 53的别名记录关联到www桶。
等你配置好DNS后,用户访问www.abc.com时,DNS会解析到www桶的S3端点,S3返回重定向到abc.com,而此时abc.com的DNS已经解析到它的S3桶,就能正常跳转到你的静态网站了。
另外补充:如果只是临时测试,你可以把www桶的重定向目标直接设为abc.com桶的S3网站端点地址,而非abc.com域名,这样访问www桶的S3端点时会直接跳转到目标桶的站点。但生产环境还是建议用域名配合DNS配置,更灵活易维护。
内容的提问来源于stack exchange,提问作者raiksey

