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

Amazon S3 redirect 404 to different host

我试图在遇到 404 时获取一个 S3 存储桶,而不是抛出一个 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>

任何人都可以给我提示我缺少什么吗?

更改错误代码:

<HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>

除非允许请求用户列出存储桶,否则 S3 不会生成 404。相反,它会生成一个 403(“禁止访问”),因为您无权知道该对象是否存在。在这种情况下,这是匿名用户,您可能不想让匿名用户列出您存储桶的全部内容。

If the object you request does not exist, the error Amazon S3 returns depends on whether you also have the s3:ListBucket permission.

If you have the s3:ListBucket permission on the bucket, Amazon S3 will return an HTTP status code 404 ("no such key") error.

if you don’t have the s3:ListBucket permission, Amazon S3 will return an HTTP status code 403 ("access denied") error.

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html

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