gpt4 book ai didi

redirect - Amazon S3 重定向规则 - 缺少 GET 数据

转载 作者:行者123 更新时间:2023-12-01 09:57:05 26 4
gpt4 key购买 nike

我们最近将网站移至 Amazon S3(所有静态页面)。我们将所有静态文件移动到另一个子域,该子域仍然指向我们的旧服务器。

除了一件事,一切都很好。

我们得到了一个仍在主域上的旧客户端调用的脚本。在新客户端上,URL 是固定的,但旧客户端仍在使用旧 URL。

我发现我们可以在 Amazon S3 中管理重定向,如 http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html 中所述。 .这是有效的,除了我们丢失了所有的 GET 变量。

有没有办法通过转发/保留 GET 变量来定义 S3 重定向?我们怎样才能最好地解决这个问题?有什么想法吗?

最佳答案

通过“获取数据”,听起来您指的是查询字符串——例如?foo=1&bar=2 -- 遵循 URL 中的路径。当您进行对象级重定向时,S3 会删除它。

您可以使用 routing rules 而不是重定向特定对象将对具有特定前缀的所有对象的请求重定向到不同的网站,并且可以选择仅在尝试为原始对象提供服务时发生错误(例如 404)时执行此重定向。使用这种方法,查询字符串似乎得到了一致的保留。

重定向 http://example.com/this/directory/* 处所有不存在的对象至http://other-site.example.com/that/directory/*你会使用这样的规则:

<RoutingRule>
<Condition>
<KeyPrefixEquals>this/directory/</KeyPrefixEquals>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<Protocol>http</Protocol>
<HostName>other-site.example.com</HostName>
<ReplaceKeyPrefixWith>that/directory/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>

<HttpErrorCodeReturnedEquals>如果您想将匹配该前缀的 每个 对象请求重定向到其他站点,则不需要,即使对象已存在于配置规则的存储桶中。 <ReplaceKeyPrefixWith>可以设置为与 <KeyPrefixEquals> 相同的值或者可能完全省略,如果您不需要重写路径前缀。

请注意,您不要在与前缀相关的选项中使用前导斜杠。

另请注意,<HttpErrorCodeReturnedEquals> 使用的正确值可能是 403(“禁止”)而不是 404(“未找到”)。 S3 中的对象可以通过存储桶级别或对象级别的权限公开。如果存储桶本身不是公开可读的,则对象仍然可以公开读取,前提是它们的权限是单独设置的。当存储桶本身不是公开可读时,(iirc)S3 将不会确认对象是否存在,在未经身份验证的请求上出现 404,而是会生成 403 错误,因此您需要捕获该错误在重定向规则中。

关于redirect - Amazon S3 重定向规则 - 缺少 GET 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23993675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com