如何从存储桶根目录重定向到 AWS S3 中的子目录?
How to redirect from bucket root to subdirectory in AWS S3?
我有一个亚马逊 S3 存储桶,服务于 S3bucketurl.com/foo/index.html
的网站。
我想配置一个 redirection rule,自动重写 URL 如下:
访问 S3bucketurl.com
应该自动重定向到 S3bucketurl.com/foo
,并提供包含在子文件夹 foo
中的 index.html
文件。
我尝试这样设置重定向规则:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>/</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>api</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
结果是404
:
404 Not Found
Code: NoSuchKey
Message: The specified key does not exist.
Key: index.html
我也试过 <ReplaceKeyWith>/api</ReplaceKeyWith>
、<ReplaceKeyWith>api/</ReplaceKeyWith>
和 <ReplaceKeyWith>/api/</ReplaceKeyWith>
的排列但无济于事。
<KeyPrefixEquals>/</KeyPrefixEquals>
这里有两个问题:首先,它匹配一个 前缀 ,这意味着末尾有一个隐含的 *
。这不是你想要的,在这里。此外,S3 存储桶中的密钥通常没有前缀 /
。对象键以前导斜线后的字符开头。您的 <ReplaceKeyWith>
被忽略,因为前缀测试从不匹配。但规则并不是最好的解决方案,这里。
做你想做的事情的方法是这样的:
上传一个空文件以在存储桶的根目录中创建一个新对象,命名为您用于索引文档的任何名称,通常为 index.html
。使其成为 public,除非您的存储桶策略使一切成为 public。
在此对象的对象元数据中,将 x-amz-website-redirect-location
设置为 /api/
(或 /foo/
,或您想要的任何路径)。
我有一个亚马逊 S3 存储桶,服务于 S3bucketurl.com/foo/index.html
的网站。
我想配置一个 redirection rule,自动重写 URL 如下:
访问 S3bucketurl.com
应该自动重定向到 S3bucketurl.com/foo
,并提供包含在子文件夹 foo
中的 index.html
文件。
我尝试这样设置重定向规则:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>/</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>api</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
结果是404
:
404 Not Found
Code: NoSuchKey
Message: The specified key does not exist.
Key: index.html
我也试过 <ReplaceKeyWith>/api</ReplaceKeyWith>
、<ReplaceKeyWith>api/</ReplaceKeyWith>
和 <ReplaceKeyWith>/api/</ReplaceKeyWith>
的排列但无济于事。
<KeyPrefixEquals>/</KeyPrefixEquals>
这里有两个问题:首先,它匹配一个 前缀 ,这意味着末尾有一个隐含的 *
。这不是你想要的,在这里。此外,S3 存储桶中的密钥通常没有前缀 /
。对象键以前导斜线后的字符开头。您的 <ReplaceKeyWith>
被忽略,因为前缀测试从不匹配。但规则并不是最好的解决方案,这里。
做你想做的事情的方法是这样的:
上传一个空文件以在存储桶的根目录中创建一个新对象,命名为您用于索引文档的任何名称,通常为 index.html
。使其成为 public,除非您的存储桶策略使一切成为 public。
在此对象的对象元数据中,将 x-amz-website-redirect-location
设置为 /api/
(或 /foo/
,或您想要的任何路径)。