使用 CloudFront 重定向但更改 URL

使用 CloudFront 重定向但更改 URL

我有一个 S3 静态网站,我想将所有请求重定向到索引页。因此,如果您访问,mysite.com/this_doesnt_exist它应该重定向到mysite.com

我能够使用自定义错误响应就像上图那样,但问题是,当我访问时,mysite.com/this_doesnt_exist我看到了索引页,但地址栏上的 URL 并没有改变。我希望它改变。

在此处输入图片描述

我也尝试过使用重定向规则部分在 S3 bucket 上,但当配置了 CloudFront 时它似乎不起作用。我有另一个用于测试环境的 bucket,没有配置 CloudFront,它在那里使用以下规则工作:

<RoutingRules>
  <RoutingRule>
    <Condition>
      <HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
      <ReplaceKeyWith/>
    </Redirect>
  </RoutingRule>
</RoutingRules>

答案1

将您的源域名从 更改example-bucket.s3.amazonaws.comexample-bucket.s3-website.${region}.amazonaws.com(替换您的存储桶的实际区域),以便 S3 重定向规则可以正常工作。CloudFront 中的默认存储桶选择适用于存储桶的 REST 端点,不会处理重定向规则。

更改<Redirect>重定向规则中的块,以便LocationS3 重定向生成的标头将您发送到正确的主机名(否则它会倾向于将浏览器直接重定向到存储桶的网站托管端点)。这里www.example.com是指向您的 CloudFront 分发的主机名。

<Redirect>
    <Protocol>https</Protocol>
    <HostName>www.example.com</HostName>
    <ReplaceKeyWith/>
</Redirect>

删除自定义错误设置。

为 创建 CloudFront 无效化/*

等待一切传播,然后重新测试。

相关内容