我正在尝试获取一个S3存储桶,当遇到404而不是丢弃一个404页面时,它会重定向到我自己的服务器,这样我就可以对错误做些什么。
这是我拼凑在一起的,我认为它应该做的是去mydomain.com并点击error.php并让php脚本锻炼用户试图在S3上访问的文件名。
无论请求来自哪个目录,我都希望这种情况发生。当我在托管404页面的网站中定义错误文档时,如果我没有定义404页面,则会收到访问被拒绝的xml错误。
这是我目前的重定向规则
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HostName>www.mydomain.com</HostName>
<ReplaceKeyPrefixWith>error.php#!/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
任何人都可以给我一些关于我缺少的信息吗?
答案 0 :(得分:14)
更改错误代码:
<HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
除非允许请求用户列出存储桶,否则S3不会生成404。相反,它会生成403(“禁止”),因为您无法知道对象是否存在。在这种情况下,这是匿名用户,您可能不希望匿名用户列出您的存储桶的全部内容。
如果您请求的对象不存在,则Amazon S3返回的错误取决于您是否还具有
s3:ListBucket
权限。如果您对存储桶拥有
s3:ListBucket
权限,则Amazon S3将返回HTTP状态代码404(“无此密钥”)错误。如果您没有
s3:ListBucket
权限,Amazon S3将返回HTTP状态代码403(“拒绝访问”)错误。- http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html