You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

S3静态托管网站不带www无法访问(Namecheap DNS、Cloudfront、ACM SSL证书)

搞定不带www前缀的S3静态网站访问问题

嘿,我来帮你捋捋这个头疼的问题!结合你提到的配置调整(换了S3 Bucket、Namecheap加了通配符CNAME、用CloudFront做分发),咱们从几个关键环节逐一排查:


1. 先盯紧CloudFront的域名和证书配置

从你给出的CloudFront截图来看,这两点一定要确认:

  • 备用域名(CNAMEs):得同时把yourdomain.com(不带www)和www.yourdomain.com都加进去!CloudFront只有识别了这两个域名,才能正确处理对应的请求,不然不带www的访问直接就会报错。
  • SSL证书:证书必须覆盖这两个域名——要么申请包含主域名+通配符的证书(yourdomain.com + *.yourdomain.com),要么单独把两个域名都加到证书里。要是证书只带www前缀,不带www的访问肯定会触发SSL安全错误。
  • 另外别忘了检查默认根对象有没有设成index.html,不然直接访问根域名可能会返回403。

2. 核对S3 Bucket的关键设置

看你的S3截图,重点检查这几个地方:

  • Bucket名称最好和不带www的域名完全一致(比如yourdomain.com),虽说通过CloudFront转发的话不是强制要求,但这样能避免一些隐性问题。
  • 确保静态网站托管功能已经启用,并且索引文档、错误文档都设置正确了。
  • 权限这块要注意:一定要让CloudFront的Origin Access Identity(OAI)有读取Bucket内容的权限,别图省事开公共读写,不安全还容易出问题。可以去Bucket的权限政策里添加允许OAI访问的规则。

3. 修正Namecheap的DNS配置(这里大概率有问题!)

你说加了主机记录为*的CNAME,但*只匹配所有子域名,不匹配主域名(也就是不带www的yourdomain.com)!所以你得单独加一条:

  • 主机记录填@(代表主域名),类型选CNAME,值填你的CloudFront分配域名(比如d12345abcdef.cloudfront.net)。
  • 同时保留www那条CNAME指向同一个CloudFront域名,这样不管带不带www的请求都能转到CloudFront。
  • 还有,DNS修改后得等TTL生效(一般10分钟到几小时),可以用nslookup yourdomain.com或者dig yourdomain.com命令查一下,看看解析是不是已经指向CloudFront了。

4. 检查CloudFront的行为和缓存

  • 去CloudFront的**行为(Behaviors)**里看看,路径模式是不是/*,确保所有请求都能被正确转发到S3。
  • 要是之前有旧缓存,可能会影响测试,直接在CloudFront控制台的Invalidations里添加/*刷新一遍缓存,清空旧内容。

5. 常见错误快速排查

  • 访问不带www的域名出现SSL错误?那肯定是CloudFront关联的证书没覆盖主域名,去AWS证书管理器重新申请一个包含主域名的证书,再绑定到CloudFront分配上。
  • 出现403 Forbidden?大概率是S3的权限没配对,检查OAI有没有权限访问Bucket,或者Bucket的政策是不是正确配置了CloudFront的访问规则。
  • 出现404 Not Found?确认S3里有index.html文件,CloudFront的默认根对象也设对了,路径没搞错。

内容的提问来源于stack exchange,提问作者jawn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 18:30:57