Amazon S3 重定向不起作用

Amazon S3 redirects not working

我在 S3 上托管了一个静态站点,我想设置从 www.example.com/2000/200/2/ 到 www.example.com.

的 301 重定向

我尝试创建一个目录结构:

/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 时,我只看到该页面。所以重定向都不起作用!有什么想法吗?

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。尝试匹配该格式。

所以有两件事:

首先,这是我用的规则

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

与 Amazon 的示例格式略有不同,但它有效。

Second 我注意到 Firefox 在我保存代码段后删除了 XML: "" 的这一部分。移至 Chrome 并且没有问题。

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

长话短说,AWS Static Site Tool 运行良好,但如果您将其用作起点,然后您的要求的复杂性增加,它就会一些错误的选择给你!