Amazon S3重定向无法正常工作

时间:2017-02-22 04:29:01

标签: amazon-web-services redirect amazon-s3 hosting

我在S3上托管了一个静态网站,我想在www.example.com/2000/200/2/上设置301重定向到www.example.com。

我尝试创建目录结构:

/2000/200/2/index.html

并使用S3的控制台在元数据属性中设置重定向,但这并不起作用。

接下来,我尝试了一个看似如下的存储桶规则:

<RoutingRules><RoutingRule>
<Condition><KeyPrefixEquals>http://www.example.com/2000/200/2/</KeyPrefixEquals></Condition>
<Redirect>
<HostName>www.example.com</HostName>
<Protocol>http</Protocol>
<ReplaceKeyPrefixWith></ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule></RoutingRules>

但现在当我转到/2000/200/2/index.html时,我只看到了该页面。所以重定向都不起作用!有什么想法吗?

2 个答案:

答案 0 :(得分:1)

Configure a Bucket for Website Hosting显示重定向示例,例如:

  <RoutingRules>
    <RoutingRule>
    <Condition>
      <KeyPrefixEquals>docs/</KeyPrefixEquals>
    </Condition>
    <Redirect>
      <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith>
    </Redirect>
    </RoutingRule>
  </RoutingRules>

  <RoutingRules>
    <RoutingRule>
    <Condition>
       <KeyPrefixEquals>images/</KeyPrefixEquals>
    </Condition>
    <Redirect>
      <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith>
    </Redirect>
    </RoutingRule>
  </RoutingRules>

这些<KeyPrefixEquals>等于相对于根的路径,而不是http://www.example.com。尝试匹配该格式。

答案 1 :(得分:1)

所以有两件事:

首先,这是我使用的规则。

<RoutingRules>
<RoutingRule>
    <Condition>
        <KeyPrefixEquals>xx/x/xxxx/xxxxxx</KeyPrefixEquals>
        <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
        <HostName>www.example.com</HostName>
        <ReplaceKeyWith></ReplaceKeyWith>
    </Redirect>
</RoutingRule>
</RoutingRules>

与亚马逊的示例格式略有不同,但它确实有效。

第二次我注意到Firefox在删除片段之后删除了这段XML:“”。转移到Chrome并没有问题。

最后,我不得不将网站连接到S3网站端点而不是API端点,包括在CloudFront中。

长话短说,AWS静态网站工具运行良好,但如果您将其用作起点,然后您的需求的复杂性增加,那么它将为您做出一些不正确的选择!