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

如何在Amazon S3中通过重定向规则将/及/index.html重定向至/en

解决Amazon S3静态网站托管的根路径重定向问题

我之前也踩过这个坑,你原来的规则无效主要有两个原因:一是KeyPrefixEquals>/</KeyPrefixEquals>会匹配所有以/开头的路径(也就是所有请求),这显然不是你想要的;二是它没法精准匹配/index.html这个具体文件。下面给你针对两个问题的具体解决方案:

1. 仅将根路径‘/’重定向至‘/en’

如果只需要处理根路径的跳转,你可以用空前缀匹配来精准拦截根请求:

<RoutingRules>
  <RoutingRule>
    <Condition>
      <KeyPrefixEquals></KeyPrefixEquals> <!-- 空前缀匹配根域名的请求 -->
    </Condition>
    <Redirect>
      <ReplaceKeyWith>/en</ReplaceKeyWith>
      <HttpRedirectCode>301</HttpRedirectCode>
    </Redirect>
  </RoutingRule>
</RoutingRules>

2. 同时将‘/’和‘/index.html’重定向至‘/en’

要同时覆盖用户直接访问根路径和/index.html的情况,需要分两个规则精准匹配:

<RoutingRules>
  <!-- 匹配根路径请求 -->
  <RoutingRule>
    <Condition>
      <KeyPrefixEquals></KeyPrefixEquals>
    </Condition>
    <Redirect>
      <ReplaceKeyWith>/en</ReplaceKeyWith>
      <HttpRedirectCode>301</HttpRedirectCode>
    </Redirect>
  </RoutingRule>

  <!-- 匹配直接访问index.html的请求 -->
  <RoutingRule>
    <Condition>
      <KeyEquals>index.html</KeyEquals> <!-- 精准匹配文件Key -->
    </Condition>
    <Redirect>
      <ReplaceKeyWith>/en</ReplaceKeyWith>
      <HttpRedirectCode>301</HttpRedirectCode>
    </Redirect>
  </RoutingRule>
</RoutingRules>

关键细节说明:

  • 用ReplaceKeyWith而非ReplaceKeyPrefixWith:因为我们是替换整个请求路径,而不是前缀——根路径的空Key要直接换成/en,index.html也要完全替换成/en,这样才能正确跳转到目标路径。
  • 301是永久重定向:如果是临时跳转需求,可以改成302,但多语言站点的默认跳转一般用永久重定向更利于SEO。
  • 确保规则配置位置:这些规则要放在S3桶的静态网站托管设置里的“重定向规则”区域,而不是桶策略或其他配置项中。

内容的提问来源于stack exchange,提问作者ascii-husky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:20:50