2017-05-07 223 views
0

特定页面我重建我的网站。新的CloudFront将在S3上进行托管。301重定向与CloudFront的

如何创建针对旧网站存在的一些网址,几个重定向,但不会在新网站上?

example.com/thing?id=blah例如我会想要重定向到othersite.com/other-path

+2

您的示例应该包含您重定向的地址以及您要重定向到的地址。 –

回答

1

你不能做重定向在CloudFront的,但因为你的出身是S3,你可以做重定向在。

首先,你需要确保为您的S3原点CloudFront的正确配置。您无法使用标准REST API(这是自动完成选项)进行网站重定向。

输入Amazon S3的静态网站托管端点你的水桶。该值显示在Amazon S3控制台的“静态网站托管”下的“属性”页面中。

当你以这种格式指定桶名称,您可以使用Amazon S3重定向和Amazon S3自定义错误文档。

(来源:Using Amazon S3 Origins and Custom Origins for Web Distributions

接下来,如果您重定向消息从链接确实有他们的查询参数,你需要评估基础上,你需要make sure CloudFront is configured to forward query parameters。我应该注意到,我从来不必在s3中构建重定向,即查询字符串参数的关键字,但根据this SO answer它应该是可能的。如果您的源服务器将返回所有的查询字符串参数不同版本的对象的基础上所有

全部转发,缓存选择此选项。

(来源:Query String Forwarding and Caching

最后,set up your S3 bucket with Routing Rules用于期望重定向。鉴于您的例子,它会是这个样子:

<RoutingRules> 
    <RoutingRule> 
    <Condition> 
    <KeyPrefixEquals>thing?id=blah</KeyPrefixEquals> 
    </Condition> 
    <Redirect> 
    <ReplaceKeyWith>other-path</ReplaceKeyWith> 
    </Redirect> 
    </RoutingRule> 
</RoutingRules> 

(来源:Syntax for Specifying Routing Rules

的最后一点要提请你注意将路由的语法规则本身。被放置在您的路由规则中的条件是KeyPrefixEquals。没有KeyEquals可用条件。

这意味着,如果您例如有thing?id=blahthing?id=blah2路由规则,顺序将很重要。把blah2blah之前,或者你永远匹配blah

还有许多其他路由规则可供选择,这将允许您更改协议,重定向到另一个域,而不仅仅是重写路径等。查看documentation on routing rules了解更多信息。

+0

非常彻底!谢谢,卢克!这是伟大的:)我现在要实现这个... – Costa

+0

我有一些不需要查询字符串的重定向。我已经开始了,但他们不工作。我只是得到我平常的404页面。我想知道这是否是因为我从同一S3存储桶为我的站点提供服务,因为我启用了静态站点托管并列出了这些重定向?我应该为重定向创建一个单独的存储桶吗? – Costa

+0

您可能需要:更改原点后给CF更多时间进行更新,或使/ *失效。您绝对需要您的同一个存储分区,并启用静态网站托管。 –