You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon S3静态网站托管404动态路径重定向规则配置求助

解决S3静态网站托管404重定向的路径替换问题

我懂你遇到的麻烦了——S3的路由规则里直接写相对路径../../根本行不通,因为它会把整个字符串当成新的对象键来查找,而不是解析成实际的路径跳转。咱们得用S3路由规则支持的变量替换功能来搞定这个动态路径的重定向需求。

问题根源

你之前的规则里,<ReplaceKeyWith>../../default/index.html</ReplaceKeyWith>会让S3去查找名为../../default/index.html的对象,而不是把请求路径里的/us/en替换成/default。S3不会自动解析相对路径,必须用它提供的变量来处理动态路径。

正确的路由规则

下面这个规则会帮你实现需求,核心是用{key}变量获取请求的完整对象键,然后通过字符串替换把目标部分换掉:

<RoutingRules>
  <RoutingRule>
    <Condition>
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
      <!-- 可选:添加这个前缀匹配,只对test/开头的路径生效,避免全局404都触发重定向 -->
      <KeyPrefixEquals>test/</KeyPrefixEquals>
    </Condition>
    <Redirect>
      <HostName>www.example.com</HostName>
      <!-- 替换路径中的/us/en/index.html为/default/index.html -->
      <ReplaceKeyWith>{key.replace('/us/en/index.html', '/default/index.html')}</ReplaceKeyWith>
      <!-- 可选:指定重定向代码,302是临时重定向,301是永久重定向,按需选择 -->
      <HttpRedirectCode>302</HttpRedirectCode>
    </Redirect>
  </RoutingRule>
</RoutingRules>

规则说明

  • {key}是S3路由规则的内置变量,会自动获取当前请求的对象键(比如当访问test/A/us/en/index.html时,{key}的值就是test/A/us/en/index.html)。
  • .replace('/us/en/index.html', '/default/index.html')会把对象键里的/us/en/index.html部分替换成/default/index.html,最终得到test/A/default/index.html,完美匹配你的动态路径需求。
  • 加上<KeyPrefixEquals>test/</KeyPrefixEquals>可以避免桶里其他路径的404请求也触发这个重定向,让规则更精准。

额外提醒

一定要确保你的S3桶里确实存在test/{dynamic}/default/index.html这些对象(比如test/A/default/index.html、test/B/default/index.html),否则重定向后还是会返回404错误哦。

内容的提问来源于stack exchange,提问作者Jihyun Moon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:33:57