我们在S3 Bucket上有大量文件(图像),这些文件将由用户浏览器的cloudfront发行版提供。 存储桶中的大多数图像都更改为更好的压缩算法,但文件在云端边缘位置仍然会在接下来的30天内进行缓存。
随着时间的推移,我们创建了一些更多的发行版,以便在存储桶中提供更新版本的现有文件。从现在开始,我们使用Invalidation,但仍有现有的发行版仍在搜索引擎和其他网站中引用。
现在我们想将旧版本的每个请求重定向到最新版本:
insertBefore
应该将301重定向永久发送到
- > HTTP:// 新 -distribution.amazonaws.com/user/filename.jpg
这可能吗?如果是的话,如何实现?
答案 0 :(得分:1)
是的,在S3的帮助下,这是可能的。
在Amazon S3中创建一个空桶。只要名称有效,该名称就不重要 - 仅限小写字母,数字和短划线。我们会说example-bucket
。
在这个新存储桶中,在存储桶属性中,在静态网站托管下,选择"将所有请求重定向到另一个域。"输入新Cloudfront分配的主机名,但不包括http://
。
在此之上,请注意Endpoint:
,类似example-bucket.s3-website-us-east-1.amazonaws.com
。
保存更改,然后尝试使用浏览器访问新端点。您输入的任何路径都应重定向到新分发的相同路径。
您刚刚创建了一个原始服务器,它将生成您希望Cloudfront返回的重定向。
实现这一目标的最后步骤 - 您可能希望使用为此目的创建的不同来源进行测试 - 是:
在旧版发布中,创建一个新的自定义来源 - 不来自" S3来源。"使用刚刚测试的端点主机名作为源主机名。
请确保将其配置为将所有请求作为HTTP发送到此来源,并且不要将Host
标题列入白名单以转发到原点,因为这不会起作用。
创建匹配使用此来源的路径模式*
的缓存行为,并删除其他行为。
您的发布会现在将所有请求发送到您的新"自定义来源,"这实际上是由S3提供的,它将使用301 Moved Permanently
进行响应并将浏览器重定向到新发行版中的相同路径。
答案 1 :(得分:1)
只需通过ViewerRequest
使用OriginRequest
或Lambda@Edge
事件来重定向。
OriginRequest
更好,因为缓存了响应。