Cos*_*sta 2 amazon-s3 amazon-web-services amazon-cloudfront
我正在重建我的网站。新的服务器将托管在S3上,并在其前面安装CloudFront。
如何为旧网站上存在的某些URL创建一些重定向,而新网站上不存在?
example.com/thing?id=blah 例如,我要重定向到 othersite.com/other-path
您无法在CloudFront中进行重定向,但是由于您的来源是S3,因此您可以在其中进行重定向。
首先,您需要确保正确配置了s3的CloudFront来源。您无法使用标准REST API(这是自动完成选项)进行网站重定向。
输入您的存储桶的Amazon S3静态网站托管终端节点。此值显示在Amazon S3控制台中“静态网站托管”下“属性”页面上。
当您以这种格式指定存储桶名称时,可以使用Amazon S3重定向和Amazon S3自定义错误文档。
(来源:使用Amazon S3来源和自定义来源进行Web分发)
接下来,如果您的“重定向自”链接中确实包含需要评估的查询参数,则需要确保将CloudFront配置为转发查询参数。我应该注意,我从未在s3中构建过查询字符串参数键的重定向,但是根据此SO答案应该是可能的。
全部转发,基于全部缓存
如果原始服务器为所有查询字符串参数返回不同版本的对象,请选择此选项。
(来源:查询字符串转发和缓存)
最后,使用路由规则为所需的重定向设置S3存储桶。以您的示例为例,它看起来像这样:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>thing?id=blah</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>other-path</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
Run Code Online (Sandbox Code Playgroud)
(来源:指定路由规则的语法)
引起您注意的最后一点是路由规则本身的语法。放置在您的路由规则上的条件为KeyPrefixEquals。没有KeyEquals可用的条件。
这意味着,例如,如果您有thing?id=blahand thing?id=blah2路由规则,则顺序很重要。放在blah2前面blah,否则您将永远匹配blah。
还有许多其他路由规则选项可用,这些选项可让您更改协议,重定向到另一个域而不仅仅是重写路径等。有关更多信息,请参阅路由规则文档。
| 归档时间: |
|
| 查看次数: |
3460 次 |
| 最近记录: |