使用 CloudFront 和 S3 AWS 时,源 URL 前缀附加到目标 URL

使用 CloudFront 和 S3 AWS 时,源 URL 前缀附加到目标 URL

我正在尝试将 URL example.io 重定向至 www.example.org/survey/imagine。

目前,我的 S3 存储桶使用以下重定向规则处理重定向:

<RoutingRules> <RoutingRule> <Condition> <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals> </Condition> <Redirect> <HostName>www.example.org</HostName> <ReplaceKeyPrefixWith>survey/imagine</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> <RoutingRule> <Condition> <HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals> </Condition> <Redirect> <HostName>www.example.org</HostName> <ReplaceKeyPrefixWith>survey/imagine</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>

我的问题是,当我向 example.io 添加任何前缀时,该前缀都会附加到目标的 url。

例子:

example.io/something重定向至www.example.org/survey/imaginesomething

example.io/blah重定向至www.example.org/survey/imagineblah

example.io/blah/there重定向至www.example.org/survey/imagineblah/there

期望结果:

example.io/something重定向至www.example.org/survey/imagine

example.io/blah重定向至www.example.org/survey/imagine

example.io/blah/there重定向至www.example.org/survey/imagine

我正在使用 CloudFront 来处理 example.io 的 DNS 服务和分发。在 example.io 的 CloudFront 中,对象路径 无效/*。我有一个路径模式 的行为/*,它应该将所有对 的请求example.io/*(其中*是通配符)重定向到 example.io s3 存储桶端点。

答案1

<ReplaceKeyPrefixWith>删除匹配的键前缀,并将新值添加到路径的前导斜杠后面。

由于您没有指定要匹配的键前缀,它会用指定的字符串替换“第一个零字节”。

/survey/imagine如果无论指定什么路径都想要重定向到,请将其更改为<ReplaceKeyWith>survey/imagine</ReplaceKeyWith>替换所有内容并丢弃原始路径。

相关内容