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

AWS S3多条件JSON重定向规则无法保存问题求助

解决AWS S3多条件JSON重定向规则只保留第一个条件的问题

我之前也踩过这个坑!你的问题根源在于JSON对象不允许存在重复键名——你把两组Condition和Redirect都塞进了同一个JSON对象里,后面的键会直接覆盖前面的,S3处理时自然只保留了第一组规则,而且因为这是JSON本身的语法特性,所以不会抛出报错。

正确的多规则写法

S3的重定向规则本质是一个独立规则对象的数组,每个重定向规则(包含一组Condition和对应的Redirect)都要作为数组里的单独元素。你需要把每个规则拆成独立的对象,再放到数组中,示例如下:

[
  {
    "Condition": { "KeyPrefixEquals": "myfolder" },
    "Redirect": {
      "HostName": "mynewdomain.com",
      "HttpRedirectCode": "301",
      "Protocol": "https",
      "ReplaceKeyPrefixWith": "mynewfolder"
    }
  },
  {
    "Condition": { "KeyPrefixEquals": "myotherfolder" },
    "Redirect": {
      "HostName": "mynewdomain.com",
      "HttpRedirectCode": "301",
      "Protocol": "https",
      "ReplaceKeyPrefixWith": "mynewotherfolder"
    }
  }
]

额外注意事项

  • S3会按数组里的顺序匹配规则,一旦找到符合条件的规则就会执行重定向,所以记得按优先级排列你的规则(比如更具体的前缀放在前面)。
  • 如果需要单规则多条件(比如同时匹配前缀和特定错误码),可以在单个Condition对象里添加多个条件键,比如:
    {
      "Condition": {
        "KeyPrefixEquals": "myfolder",
        "HttpErrorCodeReturnedEquals": "404"
      },
      "Redirect": { ... }
    }
    
  • 关于旧规则转JSON:如果旧规则是XML格式的<RoutingRule>,你可以手动批量转换——每个<RoutingRule>节点对应JSON数组里的一个对象,<Condition>标签内容对应Condition键,<Redirect>标签内容对应Redirect键。如果规则数量多,也可以写个简单的脚本(比如用Python的xmltodict库)自动转换,避免手动重复劳动。

内容的提问来源于stack exchange,提问作者Jas Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:40:08