如何将子目录重定向到外部URL s3

时间:2015-09-17 04:36:42

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

我有一个旧网站,我正在转移到s3,除了我移动到另一个子域(不是s3)的一些页面。他们的网址如下:

<section class="shop-list"> <div class="add-item"> <input id="item-add" type='text' placeholder="Enter item to shopping list..." name="itemAdd"></input> <button class="add-btn">Add Item</button> </div> <div class="item-list"> <h2>Shopping List</h2> <ul class="check-list"> <li><input type="checkbox" id="select-all"/>Select All</li> </ul> </div> <div class="removal"> <button class="rem-btn">Remove Selected</button> </div> </section>

我想将其重定向到以下网址:

http://www.example.com/2015/09/07/some-url

我似乎无法让它发挥作用,这是我的重定向规则:

http://subdomain.example.com/2015/09/07/some-url

另外,我是否必须在s3存储桶中实际创建空目录才能使规则生效?

2 个答案:

答案 0 :(得分:2)

您无需空目录即可使用此功能。但是,您可能希望删除尾部斜杠。

<KeyPrefixEquals>2015/09/07/some-url/</KeyPrefixEquals>

... ...变为

<KeyPrefixEquals>2015/09/07/some-url</KeyPrefixEquals>

如果不是由传入请求提供,则目标服务器通常会添加尾部斜杠(如果需要)。

此外,除非值正在改变,否则您不需要设置<ReplaceKeyPrefixWith>

答案 1 :(得分:0)

https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html

通过REST API设置页面重定向 以下Amazon S3 API操作支持请求中的x-amz-website-redirect-location标头。 Amazon S3将标头值存储在对象元数据中,作为x-amz-website-redirect-location。

PUT对象

启动分段上传

POST对象

PUT对象-复制

设置页面重定向时,可以保留或删除对象内容。例如,假设您的存储桶中有一个page1.html对象。

要保留page1.html的内容并仅重定向页面请求,可以提交PUT对象-复制请求以创建一个使用现有page1.html对象作为源的新page1.html对象。在您的请求中,设置x-amz-website-redirect-location标头。请求完成后,您将拥有原始页面,其内容不变,但是Amazon S3将对该页面的所有请求重定向到您指定的重定向位置。

要删除page1.html对象的内容并重定向页面请求,可以发送PUT Object请求以上传具有相同对象键:page1.html的零字节对象。在PUT请求中,将page1.html的x-amz-website-redirect-location设置为新对象。请求完成后,page1.html没有内容,请求将重定向到x-amz-website-redirect-location指定的位置。

当您使用GET Object操作检索对象以及其他对象元数据时,Amazon S3在响应中返回x-amz-website-redirect-location标头。