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

Thi*_*key 6 amazon-s3 amazon-web-services

我试图获得一个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>
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一个关于我缺少的提示吗?

Mic*_*bot 14

更改错误代码:

<HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
Run Code Online (Sandbox Code Playgroud)

除非允许请求用户列出存储桶,否则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重定向规则 - 缺少GET数据