我在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时,我只看到了该页面。所以重定向都不起作用!有什么想法吗?
答案 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静态网站工具运行良好,但如果您将其用作起点,然后您的需求的复杂性增加,那么它将为您做出一些不正确的选择!