我正在尝试做一些相对简单的事情-我想设置一些域和子域以重定向到我们网站的核心域,但是我想将重定向放在Cloudfront上。除重定向根路径外,其他所有操作均有效-这使我得到了一个XML文件,其中部分描述了S3存储桶。
背景
S3
S3允许您设置全重定向存储桶,例如:
通过测试,Web终结点(brass9-com.s3-website-us-west-1.amazonaws.com)会执行应做的工作-将其重定向到brass9.com。好。
云前
Cloudfront允许您指向S3存储桶,但是它建议您这样做的方式是错误的- 您需要使用上面的Web端点,而不是像Brass9-com.s3.amazonaws.com这样指向存储桶。除此之外,您可以将所有内容保留为默认值,并获得良好的重定向行为。因此,像www.brass9.com/portfolio这样的路径会正确地重定向到它应该在的位置。也不错。
问题-根域重定向
然后无法正常工作的一件事是从纯www.brass9.com重定向。与其让您获得重定向,不如让您得到这个奇怪的结果:
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>brass9-com</Name><Prefix></Prefix>
<Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated>
</ListBucketResult>
好... 。因此,这并不是完全意外的 -因为没有默认根对象。但是,为防止这种行为,我可能会指定哪个默认根对象?我需要指向的S3重定向对象的名称是什么?还是有其他适当的配置,或者这仅仅是Amazon需要修复的Cloudfront和S3交互方式中的错误?
已知的不起作用的解决方案:默认根对象
可以指定index.html的默认根对象,但是它没有任何帮助-只是改变了问题。相反,Cloudfront URL重定向到主站点上的/index.html,该站点是404(我们不使用index.html文件,它是服务器端框架驱动的站点)。我可以在服务器上放一个index.html,但这首先使使用Cloudfront的速度提高不大。
类似问题
一个问题提出了类似的要求,但由于某种原因而不是我所看到的XML响应,返回了一个空白的0字节响应。它不包含有关该问题或解决方案的问题。
相关文章
一篇文章建议您仅在裸域和www域上为整个网站提供服务。这与任何用户的书签,您的搜索排名等有关。您不应该这样做。
一些人讨论了在S3和Cloudfront上托管静态网站而不是重定向方案,因此没有关系。
那么,如何正确执行此操作?
Cloudfront配置的屏幕快照-无默认根对象,指向S3起源。忽略进行中-我刚刚打开和关闭默认根对象进行测试。
以及该发行版的Origin配置:
GET /
在您更正配置以使用Web终结点之前,听起来还好像您可能一直在从Cloudfront看到缓存的响应。