【问题标题】:Amazon S3 URL redirect to root /Amazon S3 URL 重定向到根 /
【发布时间】:2019-03-13 04:16:45
【问题描述】:

我在 S3 上有一个静态网站,我希望传入 my-site.com/home/* 的所有请求都重定向到 my-site.com/*。

(例如 my-site.com/home/etc.html -> my-site.com/etc.html)

我尝试了几种方法来解决这个问题,但没有那么聪明的解决方案。例如,我可以为所有 html 文件编写重定向规则,如下所示。

<RoutingRules>
  <RoutingRule>
    <Condition>
      <KeyPrefixEquals>home/something.html</KeyPrefixEquals>
    </Condition>
    <Redirect>
      <ReplaceKeyWith>something.html</ReplaceKeyWith>
    </Redirect>
  </RoutingRule>
</RoutingRules>

这可行,但我不想为每个新文件创建规则。

&lt;ReplaceKeyWith&gt;/&lt;/ReplaceKeyWith&gt;这个方法也不行。

有没有办法解决这个问题或者我应该使用 nginx 吗?

【问题讨论】:

    标签: amazon-web-services redirect amazon-s3 routing


    【解决方案1】:

    如果您希望/home/{whatever}{whatever} 的所有可能值重定向到/{whatever},那么您需要一个规则来匹配键前缀home/ 并将其替换为空字符串。

    路径开头的/ 不是键(或键前缀)的一部分,因此这些表达式从不以/ 开头。

    <RoutingRules>
      <RoutingRule>
        <Condition>
          <KeyPrefixEquals>home/</KeyPrefixEquals>
        </Condition>
        <Redirect>
          <ReplaceKeyPrefixWith></ReplaceKeyPrefixWith>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    

    【讨论】:

    • 谢谢迈克尔。我想知道为什么官方文档没有提到这一点..
    • 示例对象键 in general docs 以及 conditional redirects 中显示的键和键前缀都缺少前导斜杠,但不可否认的是,除非您考虑一下,否则它不一定是显而易见的事情之一它几乎是迂腐的细节:前导 / 象征着“根”,但不是对象实际名称(键)的一部分,键 prefixes 总是隐式地左锚定,由定义。
    猜你喜欢
    • 1970-01-01
    • 2014-05-09
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2015-01-25
    相关资源
    最近更新 更多