设置桶的网站配置-SetBucketWebsite
功能介绍
OBS允许在桶内保存静态的网页资源,如.html网页文件、flash文件、音视频文件等,当客户端通过桶的Website接入点访问这些对象资源时,浏览器可以直接解析出这些支持的网页资源,呈现给最终用户。可以通过本接口为桶创建或更新网站配置信息。了解更多有关静态网站信息,请参见静态网站托管。
接口约束
- 自2022年1月1日起生效:华北-北京一、华北-北京四、华北-乌兰察布一、华东-上海一、华东-上海二、华南-广州、西南-贵阳一
- 自2022年3月25日起生效:中国-香港、亚太-曼谷、亚太-新加坡、非洲-约翰内斯堡、拉美-墨西哥城一、拉美-墨西哥城二、拉美-圣保罗一、拉美-圣地亚哥
- 其他地区以实际生效时间为准。
- 通过自定义域名使用静态网站托管功能不受影响,仍然支持文件内容的直接预览,详情请参见如何在浏览器中在线预览OBS中的对象?
- 如果OBS桶开启了静态网站托管功能的同时要配置CDN加速,请在配置CDN加速域名时勾选“静态网站托管”,这样用户访问单个静态文件时就不会列出桶中所有文件列表。同时,请在CDN域名的源站配置页面勾选“静态网站托管”。具体请参见为什么OBS桶接入CDN后,访问域名会列出所有文件列表?
- 尽量避免目标桶名中带有“.”,否则通过HTTPS访问时可能出现客户端校验证书出错。
- 设置桶的静态网站托管配置请求消息体的上限是10KB。
授权信息
您必须是桶拥有者或拥有设置桶的网站配置的权限,才能调用本接口,建议使用IAM或桶策略进行授权。了解更多OBS授权方式请参见OBS不同权限控制方式的区别。
- 如果使用IAM授权,那么请在“角色与策略授权”、“身份策略授权”两种IAM授权方式中选择一种,并配置相应权限:
- 如果使用角色与策略授权(旧版IAM,即IAM v3接口),需具备obs:bucket:PutBucketWebsite权限,授权操作请参见创建IAM自定义策略。
- 如果使用身份策略授权(新版IAM,即IAM v5接口),如下表所示,需具备obs:bucket:putBucketWebsite权限,授权操作请参见创建IAM自定义身份策略。
授权项
Action
访问级别
Access Level
资源类型(*为必须)
Resource Type (*: required)
Condition Key
Alias
依赖的授权项
Dependencies
obs:bucket:putBucketWebsite
Write
bucket *
-
-
-
- obs:EpochTime
- obs:SourceIp
- obs:TlsVersion
- obs:CustomDomain
- 如果使用桶策略进行授权,需具备obs:bucket:PutBucketWebsite权限,具体操作请参见自定义创建桶策略。
URI
PUT /
请求消息样式
1 2 3 4 5 6 7 8 9 10 | PUT /?website HTTP/1.1 Host: bucketname.obs.cn-north-4.myhuaweicloud.com Content-Length: length Date: date Authorization: authorization <WebsiteConfiguration> <RedirectAllRequestsTo> <HostName>hostName</HostName> </RedirectAllRequestsTo> </WebsiteConfiguration> |
URI参数(URI Parameters)
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| website | 是 | 字符串 | 参数解释: 用于标识API接口与桶的网站设置有关。 约束限制: 计算签名时,请在CanonicalizedResource中添加“/BucketName/?website”,详情参见签名计算。 取值范围: website 默认取值: 不涉及 |
请求头参数(Request headers)
该请求使用公共请求头,具体参见表3。
请求体参数(Request body)
在此请求中,需要在请求的消息体中配置桶的网站配置信息,配置信息以XML格式上传。
- 如果重定向所有请求,网站配置元素如表2描述。
表2 重定向所有请求Website配置元素 参数
参数类型
是否必选
描述
WebsiteConfiguration
Container
是
参数解释:
网站配置的根节点。
约束限制:
不涉及。
取值范围:
不涉及。
默认取值:
不涉及。
RedirectAllRequestsTo
Container
是
参数解释:
描述所有请求的重定向行为,如果这个节点出现,所有其他的兄弟节点都不能出现。WebsiteConfiguration是RedirectAllRequestsTo的父节点。
约束限制:
不涉及。
取值范围:
不涉及。
默认取值:
不涉及。
HostName
String
是
参数解释:
描述重定向的站点名。RedirectAllRequestsTo是HostName的父节点。
约束限制:
不包含"http://"或"https://"前缀。
取值范围:
合法的域名或主机名(不带协议前缀)。
默认取值:
不涉及。
Protocol
String
否
参数解释:
描述重定向请求时使用的协议(http,https),默认使用http协议。RedirectAllRequestsTo是Protocol的父节点。
约束限制:
不涉及。
取值范围:
http或者https。
默认取值:
不涉及。
- 如果想要设定重定向规则,网站配置元素如表3描述。
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| WebsiteConfiguration | 是 | Container | 参数解释: Website配置的根节点。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| IndexDocument | 是 | Container | 参数解释: Suffix元素,主页配置的容器。 父节点:WebsiteConfiguration 子节点:Suffix 约束限制: 如果没有RedirectAllRequestsTo,则必须有IndexDocument。 取值范围: 不涉及。 默认取值: 不涉及。 |
| Suffix | 是 | String | 参数解释: Suffix元素被追加在对文件夹的请求的末尾(例如:Suffix配置的是“index.html”,请求的是“samplebucket/images/”,返回的数据将是“samplebucket”桶内名为“images/index.html”的对象的内容)。 父节点:IndexDocument 约束限制: Suffix元素不能为空或者包含“/”字符。 取值范围: 非空字符串,最长1024字符。 默认取值: 不涉及。 |
| ErrorDocument | 否 | Container | 参数解释: Key元素,4XX错误出现时返回的错误页面配置。 父节点:WebsiteConfiguration 约束限制: 不能为空;UTF-8字节长度不超过1024。 取值范围: 不涉及。 默认取值: 不涉及。 |
| Key | 否 | String | 参数解释: 当4XX错误出现时使用的对象的名称。这个元素指定了当错误出现时返回的页面。当ErrorDocument存在时,ErrorDocument是Key的父节点。 父节点:ErrorDocument 约束限制: 对象必须在桶内存在。 取值范围: 桶内已存在的对象名,长度4-1024字符。 默认取值: 不涉及。 |
| RoutingRules | 否 | Container | 参数解释: Routing元素,重定向路由规则的容器元素。 父节点:WebsiteConfiguration 约束限制: 至少要有一个RoutingRule。 取值范围: 不涉及。 默认取值: 不涉及。 |
| RoutingRule | 是 | Container | 参数解释: 重定向规则的元素。一条重定向规则包含一个Condition和一个Redirect,当Condition匹配时,Redirect生效。 父节点:RoutingRules是RoutingRule的父节点,元素中至少要有一个RoutingRule元素。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| Condition | 否 | Container | 参数解释: 描述重定向规则匹配的条件的元素。 父节点:RoutingRule 约束限制: 至少要有一个子标签(KeyPrefixEquals或HttpErrorCodeReturnedEquals)。 取值范围: 不涉及。 默认取值: 不涉及。 |
| Redirect | 是 | Container | 参数解释: 重定向信息的元素。可以重定向到另一个站点、另一个页面或使用另一个协议。当事件或错误发生时,可以指定不同的返回码。 父节点:RoutingRule 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
响应消息样式
1 2 3 | HTTP/1.1 status_code Date: date Content-Length: length |
响应头 (Response Headers)
该请求的响应消息使用公共响应头,具体请参考表1。
响应体 (Response Body)
该请求的响应消息不带消息元素。
错误响应消息
无特殊错误,所有错误已经包含在错误码概述中。
请求示例:将该桶的所有请求重定向至其他桶或URL
1 2 3 4 5 6 7 8 9 10 11 12 13 | PUT /?website HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: Wed, 01 Jul 2015 03:40:29 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:pUK7Yp0yebnq4P6gqzVjoS7whoM= Content-Length: 194 <WebsiteConfiguration xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/"> <RedirectAllRequestsTo> <HostName>www.huaweicloud.com</HostName> </RedirectAllRequestsTo> </WebsiteConfiguration> |
响应示例:将该桶的所有请求重定向至其他桶或URL
1 2 3 4 5 6 | HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF2600000164360D144670B9D02AABC6 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSItqMZ/AoFUX97l1xx8s67V3cCQtXWk Date: Wed, 01 Jul 2015 03:40:29 GMT Content-Length: 0 |
请求示例:设置桶的网站配置,不配置重定向
PUT /?website HTTP/1.1
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4=
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Date: Wed, 01 Jul 2015 02:37:22 GMT
Content-Type: application/xml
<WebsiteConfiguration xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/">
<IndexDocument>
<Suffix>index.html</Suffix>
</IndexDocument>
<ErrorDocument>
<Key>SomeErrorDocument.html</Key>
</ErrorDocument>
</WebsiteConfiguration> 响应示例:设置桶的网站配置,不配置重定向
HTTP/1.1 200 OK x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSfxlr+FrXuJzYpLod1lrLK45tVx+GPR x-obs-request-id: 0000018A39F07D0DD3888442DC29719E Server: OBS Content-Length: 0 Date: Wed, 01 Jul 2015 02:37:22 GMT
请求示例:设置桶的网站配置,并指定可选的重定向规则
PUT /?website HTTP/1.1
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4=
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Date: Wed, 01 Jul 2015 02:37:22 GMT
Content-Type: application/xml
<WebsiteConfiguration xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/">
<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-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSxixo46vLYhGrY/zwgqlM0fMNpeFthi x-obs-request-id: 0000018A39F2E328D3888F46DB9BB5A2 Server: OBS Content-Length: 0 Date: Wed, 01 Jul 2015 02:37:22 GMT
请求示例:设置桶的网站配置,并重定向错误
PUT /?website HTTP/1.1
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4=
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Date: Wed, 01 Jul 2015 02:37:22 GMT
Content-Type: application/xml
<WebsiteConfiguration xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/">
<IndexDocument>
<Suffix>index.html</Suffix>
</IndexDocument>
<ErrorDocument>
<Key>Error.html</Key>
</ErrorDocument>
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HostName>www.huaweicloud.com</HostName>
<ReplaceKeyPrefixWith>report-404/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
</WebsiteConfiguration> 响应示例:设置桶的网站配置,并重定向错误
HTTP/1.1 200 OK x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCS/xBBLGZwRUiL439eWMw1v/vphFB6JY x-obs-request-id: 0000018A3A06C048D38610C04366B2F5 Server: OBS Content-Length: 0 Date: Wed, 01 Jul 2015 02:37:22 GMT
请求示例:设置桶的网站配置,并将文件夹请求重定向到页面
PUT /?website HTTP/1.1
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4=
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Date: Wed, 01 Jul 2015 02:37:22 GMT
Content-Type: application/xml
<WebsiteConfiguration xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/">
<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> 响应示例:设置桶的网站配置,并将文件夹请求重定向到页面
HTTP/1.1 200 OK x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSLjAKDDyha8LY/HcoFNfbLBeAKCAYcv x-obs-request-id: 0000018A3A09D30CD306902FC7572429 Server: OBS Content-Length: 0 Date: Wed, 01 Jul 2015 02:37:22 GMT
使用SDK调用接口
建议您使用OBS SDK调用接口。SDK对API进行了封装以简化您的开发工作,直接调用SDK接口函数即可访问OBS,无需手动计算签名。