文档中心 > PutBucketWebsite
PutBucketWebsite

最近更新时间:2021-12-24

使用PutBucketWebsite接口设置在website子资源中指定的网站的配置。

要将存储桶配置为网站,您可以在存储桶中将此子资源添加到网站配置信息中,例如索引文档的文件名和任何重定向规则。

此PUT操作需要S3:PutBucketWebsite许可。默认情况下,只有存储桶拥有者可以配置website连接到存储桶的附件;但是,存储桶拥有者可以website通过编写授予他们S3:PutBucketWebsite权限的存储桶策略来允许其他用户设置配置。


请求

请求语法

PUT /?website HTTP/1.1

Host: examplebucket.region.unicloudsrv.com

Content-MD5: ContentMD5

<?xml version="1.0" encoding="UTF-8"?>

<WebsiteConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">

   <ErrorDocument>

      <Key>string</Key>

   </ErrorDocument>

   <IndexDocument>

      <Suffix>string</Suffix>

   </IndexDocument>

   <RedirectAllRequestsTo>

      <HostName>string</HostName>

      <Protocol>string</Protocol>

   </RedirectAllRequestsTo>

   <RoutingRules>

      <RoutingRule>

         <Condition>

            <HttpErrorCodeReturnedEquals>string</HttpErrorCodeReturnedEquals>

            <KeyPrefixEquals>string</KeyPrefixEquals>

         </Condition>

         <Redirect>

            <HostName>string</HostName>

            <HttpRedirectCode>string</HttpRedirectCode>

            <Protocol>string</Protocol>

            <ReplaceKeyPrefixWith>string</ReplaceKeyPrefixWith>

            <ReplaceKeyWith>string</ReplaceKeyWith>

         </Redirect>

      </RoutingRule>

   </RoutingRules>

</WebsiteConfiguration>


请求参数

参数

描述

Content-MD5

经过base64编码的128位MD5摘要。您必须将此标头用作消息完整性检查,以验证请求正文在传输过程中没有损坏。

请求正文

您可以使用网站配置将所有请求重定向到存储桶的网站端点,也可以添加仅重定向特定请求的路由规则。

要将所有发送到存储桶网站端点的网站请求重定向,请添加包含以下元素的网站配置。由于所有请求都发送到另一个网站,因此您无需提供存储桶的索引文档名称。

名称

描述

需要

WebsiteConfiguration

网站配置的根元素

  • 类型:容器

  • 祖先:无

RedirectAllRequestsTo

描述对此存储桶的网站端点的每个请求的重定向行为。如果存在此元素,则不允许其他同级。

  • 类型:容器

  • 祖先:WebsiteConfiguration

HostName

将重定向请求的主机的名称。

  • 类型:字符串

  • 祖先:RedirectAllRequestsTo

Protocol

重定向请求时使用的协议(http,https)。默认值为原始请求中使用的协议。

  • 类型:字符串

  • 祖先:RedirectAllRequestsTo

 

如果要对重定向进行精细控制,则可以使用以下元素添加路由规则,这些规则描述了重定向请求的条件以及有关重定向目标的信息。在这种情况下,网站配置必须为存储桶提供索引文档,因为某些请求可能不会重定向。

名称

描述

需要

WebsiteConfiguration

请求的容器

  • 类型:容器

  • 祖先:无

IndexDocument

Suffix 元素的容器。

  • 类型:容器

  • 祖先:WebsiteConfiguration

Suffix

后缀附加到网站端点目录请求(例如,如果后缀是index.html且您向发出请求)samplebucket/images/,返回的数据将用于键名称为images /的对象index.html)后缀不能为空,并且不能包含斜杠字符。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.IndexDocument

ErrorDocument

Key元素的容器

  • 类型:容器

  • 祖先:WebsiteConfiguration

没有

Key

发生4XX类错误时要使用的对象密钥名称。该键标识发生此类错误时返回的页面。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.ErrorDocument

  • 条件:ErrorDocument指定时为必需 。

有条件的

RoutingRules

用于路由规则元素集合的容器。

  • 类型:容器

  • 祖先:WebsiteConfiguration

没有

RoutingRule

一个路由规则的容器,用于标识条件和在满足条件时应用的重定向。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.RoutingRules

  • 条件:在一个RoutingRules容器中,必须至少有一个RoutingRule元素。

Condition

一个容器,用于描述要应用指定的重定向必须满足的条件。例如:如果请求的是/docs文件夹中的页面,请重定向到该/documents文件夹。如果请求导致HTTP错误4xx,请将请求重定向到可能处理该错误的其他主机。

  • 类型:容器

  • 祖先:WebsiteConfiguration.RoutingRules.RoutingRule

没有

KeyPrefixEquals

应用重定向时的对象键名称前缀。例如,要重定向的请求ExamplePage.html,键前缀将为 ExamplePage.html。要重定向带有前缀的所有页面的请求docs/,键前缀将为/docs,它标识docs/ 文件夹中的所有对象。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.RoutingRules.RoutingRule.Condition

  • 条件:在Condition指定父元素HttpErrorCodeReturnedEquals且未指定同级时必需 。如果同时指定了两个条件,则两个都必须为true才能应用重定向。

有条件的

HttpErrorCodeReturnedEquals

应用重定向时的HTTP错误代码。如果发生错误,如果错误代码等于该值,则将应用指定的重定向。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.RoutingRules.RoutingRule.Condition

  • 条件:Condition指定父元素KeyPrefixEquals且未指定同级时必需 。如果同时指定了两个,则两个都必须为true才能应用重定向。

有条件的

Redirect

重定向信息的容器。您可以将请求重定向到另一个主机,另一个页面或另一个协议。如果发生错误,您可以指定其他错误代码以返回。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.RoutingRules.RoutingRule

Protocol

在重定向请求中使用的协议。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.RoutingRules.RoutingRule.Redirect有效值:http,https

  • 条件:如果有一个同胞,则不需要

没有

HostName

在重定向请求中使用的主机名。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.RoutingRules.RoutingRule.Redirect

  • 条件:如果有一个同胞,则不需要

没有

ReplaceKeyPrefixWith

在重定向请求中使用的对象密钥前缀。例如,重定向与前缀的所有页面的请求docs/(该对象中的docs/文件夹中)documents/,你可以设置一个 condition与块 KeyPrefixEquals设置为 docs/和中Redirect集 ReplaceKeyPrefixWith来 /documents。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.RoutingRules.RoutingRule.Redirect

  • 条件:如果有一个同胞,则不需要。仅当ReplaceKeyWith未提供时才可以存在。

没有

ReplaceKeyWith

在重定向请求中使用的特定对象密钥。例如,将请求重定向到error.html。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.RoutingRules.RoutingRule.Redirect

  • 条件:如果存在同一个兄弟,则不需要。仅当ReplaceKeyPrefixWith未提供时才可以存在。

没有

HttpRedirectCode

在响应上使用的HTTP重定向代码。

  • 类型:字符串

  • 祖先:WebsiteConfiguration.RoutingRules.RoutingRule.Redirect

  • 条件:如果有一个同胞,则不需要。

没有


响应

响应元素


示例

示例1:将存储桶配置为网站(添加网站配置)

PUT ?website HTTP/1.1

Host: examplebucket.region.unicloudsrv.com

Content-Length: 256

Date: Thu, 27 Jan 2011 12:00:00 GMT

Authorization: signatureValue

 

<WebsiteConfiguration xmlns='http://s3.amazonaws.com/doc/2006-03-01/'>

    <IndexDocument>

        <Suffix>index.html</Suffix>

    </IndexDocument>

    <ErrorDocument>

        <Key>SomeErrorDocument.html</Key>

    </ErrorDocument>

</WebsiteConfiguration>

返回以下示例响应。

HTTP/1.1 200 OK

x-amz-request-id: 80CD4368BD211111

Date: Thu, 27 Jan 2011 00:00:00 GMT

Content-Length: 0


示例2:将存储桶配置为网站,但重定向所有请求

PUT ?website HTTP/1.1

Host: examplebucket.region.unicloudsrv.com

Content-Length: length-value

Date: Thu, 27 Jan 2011 12:00:00 GMT

Authorization: signatureValue

 

<WebsiteConfiguration xmlns='http://s3.amazonaws.com/doc/2006-03-01/'>

   <RedirectAllRequestsTo>

      <HostName>example.com</HostName>

    </RedirectAllRequestsTo>

</WebsiteConfiguration>

返回以下示例响应。

HTTP/1.1 200 OK

x-amz-request-id: 80CD4368BD211111

Date: Thu, 27 Jan 2011 12:00:00 GMT

Content-Length: 0


示例3:将存储桶配置为网站,并指定可选的重定向规则

您可以通过添加重定向对一个或多个对象的请求的路由规则来进一步自定义网站配置。例如,假设您的存储桶包含以下对象:

  • index.html

  • docs / article1.html

  • docs / article2.html

如果您决定将文件夹从重命名docs/为documents/,则需要将前缀请求重定向/docs到 documents/。例如,对的请求 docs/article1.html将需要重定向到 documents/article1.html。

在这种情况下,您将更新网站配置并添加路由规则,如以下请求所示:

PUT ?website HTTP/1.1

Host: examplebucket.region.unicloudsrv.com

Content-Length: length-value

Date: Thu, 27 Jan 2011 12:00:00 GMT

Authorization: signatureValue

 

<WebsiteConfiguration xmlns='http://s3.amazonaws.com/doc/2006-03-01/'>

  <IndexDocument>

    <Suffix>index.html</Suffix>

  </IndexDocument>

  <ErrorDocument>

    <Key>Error.html</Key>

  </ErrorDocument>

 

  <RoutingRules>

    <RoutingRule>

    <Condition>

      <KeyPrefixEquals>docs/</KeyPrefixEquals>

    </Condition>

    <Redirect>

      <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith>

    </Redirect>

    </RoutingRule>

  </RoutingRules>

</WebsiteConfiguration>

返回以下示例响应。

HTTP/1.1 200 OK

x-amz-request-id: 80CD4368BD211111

Date: Thu, 27 Jan 2011 12:00:00 GMT

Content-Length: 0


示例4:将存储桶配置为网站并重定向错误

您可以使用路由规则来指定检查特定HTTP错误代码的条件。当页面请求导致此错误时,您可以选择重新路由请求。例如,您可以将请求路由到另一个主机,并选择处理错误。发生HTTP错误404时,以下请求中的路由规则会将请求重定向到云主机实例。为说明起见,重定向还在重定向中插入了对象关键字前缀report-404/。例如,如果您请求一个页面ExamplePage.html并导致HTTP 404错误,则该请求将路由到一个页面report-404/testPage.html在指定的云主机实例上。如果没有路由规则,并且发生HTTP错误404,则将Error.html返回该错误 。

PUT ?website HTTP/1.1

Host: examplebucket.region.unicloudsrv.com

Content-Length: 580

Date: Thu, 27 Jan 2011 12:00:00 GMT

Authorization: signatureValue

 

<WebsiteConfiguration xmlns='http://s3.amazonaws.com/doc/2006-03-01/'>

  <IndexDocument>

    <Suffix>index.html</Suffix>

  </IndexDocument>

  <ErrorDocument>

    <Key>Error.html</Key>

  </ErrorDocument>

 

  <RoutingRules>

    <RoutingRule>

    <Condition>

      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals >

    </Condition>

    <Redirect>

      <HostName>ec2-11-22-333-44.compute-1.amazonaws.com</HostName>

      <ReplaceKeyPrefixWith>report-404/</ReplaceKeyPrefixWith>

    </Redirect>

    </RoutingRule>

  </RoutingRules>

</WebsiteConfiguration>


示例5:将存储桶配置为网站,并将文件夹请求重定向到页面

假设您的存储桶中包含以下页面:

  • images / photo1.jpg

  • images / photo2.jpg

  • images / photo3.jpg

现在,您希望将所有带有images/前缀的页面的请求路由 到单个页面errorpage.html。您可以使用以下请求中显示的路由规则将网站配置添加到存储桶:

PUT ?website HTTP/1.1

Host: examplebucket.region.unicloudsrv.com

Content-Length: 481

Date: Thu, 27 Jan 2011 12:00:00 GMT

Authorization: signatureValue

 

<WebsiteConfiguration xmlns='http://s3.amazonaws.com/doc/2006-03-01/'>

  <IndexDocument>

    <Suffix>index.html</Suffix>

  </IndexDocument>

  <ErrorDocument>

    <Key>Error.html</Key>

  </ErrorDocument>

 

  <RoutingRules>

    <RoutingRule>

    <Condition>

      <KeyPrefixEquals>images/</KeyPrefixEquals>

    </Condition>

    <Redirect>

      <ReplaceKeyWith>errorpage.html</ReplaceKeyWith>

    </Redirect>

    </RoutingRule>

  </RoutingRules>

</WebsiteConfiguration>