我正在尝试将 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>
替换所有内容并丢弃原始路径。