Amazon S3将404重定向到不同的主机

时间:2015-01-23 17:06:31

标签: amazon-web-services amazon-s3

我正在尝试获取一个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>

任何人都可以给我一些关于我缺少的信息吗?

1 个答案:

答案 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

另请参阅:Amazon S3 Redirect rule - GET data is missing