doj*_*rge 1 amazon-s3 amazon-web-services
我正在尝试设置一个S3存储桶来处理一组动态链接并适当地重定向它们.传入链接的结构将是类似的deeplink.s3-website-eu-west-1.amazonaws.com/link1,我喜欢指向deeplink.s3-website-eu-west-1.amazonaws.com?url=link1.这是否可以在重定向规则中进行?
如果您希望S3重定向/link1到?url=link1那么这将执行此操作:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals></KeyPrefixEquals>
<HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HostName>target.example.com</HostName>
<ReplaceKeyPrefixWith>?uri=/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
Run Code Online (Sandbox Code Playgroud)
这里的逻辑是,如果键前缀是一个零长度的字符串,它始终是 - 每个字符串的最左边的0个字符是空字符串,无论字符串包含什么 - 并且错误代码将是403如果你没有给匿名用户许可列出对象(你不应该),那么它总是用于丢失对象,然后?uri=/在密钥前面加上- 从技术上讲,我们要求S3通过"替换"使用我们的前置字符串在键中最左边的0个字符(同样,记住S3键实际上没有前导斜杠,所以在我的情况下,我添加/- 如果你不想要前导斜杠,那么只需使用?uri=)和重定向到目标主机.
在这个问题中,你提到重定向到同一个桶 - 不知道那会对你做什么,因为S3不会对该查询字符串做任何事情,并且在我的应用程序中,我重定向到另一个站点 - 但是这个路由规则执行您似乎尝试执行的操作.
另一方面,如果您希望S3重定向?url=link1到/link1,那么路由规则就不可能,因为它们不处理查询字符串.
| 归档时间: |
|
| 查看次数: |
1121 次 |
| 最近记录: |