# 设置桶的网站配置-SetBucketWebsite
#### 功能介绍
OBS允许在桶内保存静态的网页资源，如.html网页文件、flash文件、音视频文件等，当客户端通过桶的Website接入点访问这些对象资源时，浏览器可以直接解析出这些支持的网页资源，呈现给最终用户。可以通过本接口为桶创建或更新网站配置信息。了解更多有关静态网站信息，请参见[静态网站托管](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829093.html)。
#### 接口约束
![](https://support.huaweicloud.com/api-obs/public_sys-resources/caution_3.0-zh-cn.png)
基于安全合规要求，华为云对象存储服务OBS**禁止通过OBS的默认域名** （[桶访问域名或静态网站访问域名](https://support.huaweicloud.com/productdesc-obs/obs_03_0152.html)）**使用静态网站托管功能** ，即使用上述域名从浏览器访问网页类型文件时，不会显示对象内容，而是以附件形式下载。各区域将自以下时间点起生效：
- 自2022年1月1日起生效：华北-北京一、华北-北京四、华北-乌兰察布一、华东-上海一、华东-上海二、华南-广州、西南-贵阳一
- 自2022年3月25日起生效：中国-香港、亚太-曼谷、亚太-新加坡、非洲-约翰内斯堡、拉美-墨西哥城一、拉美-墨西哥城二、拉美-圣保罗一、拉美-圣地亚哥
- 其他地区以实际生效时间为准。
 
- 通过自定义域名使用静态网站托管功能不受影响，仍然支持文件内容的直接预览，详情请参见[如何在浏览器中在线预览OBS中的对象？](https://support.huaweicloud.com/obs_faq/obs_03_0087.html)

- 如果OBS桶开启了静态网站托管功能的同时要配置CDN加速，请在配置CDN加速域名时勾选"静态网站托管"，这样用户访问单个静态文件时就不会列出桶中所有文件。同时，请在CDN域名的源站配置页面勾选"静态网站托管"。具体请参见[为什么OBS桶接入CDN后，访问域名会列出所有文件列表？](https://support.huaweicloud.com/cdn_faq/cdn_faq_0202.html)
- 设置桶的静态网站托管配置请求消息体的上限是10KB。
 
#### 授权信息
您必须是桶拥有者或拥有设置桶的网站配置的权限，才能调用本接口，建议使用IAM或桶策略进行授权。了解更多OBS授权方式请参见[OBS不同权限控制方式的区别](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0001.html)。
- 如果使用**IAM授权** ，那么请在"角色与策略授权"、"身份策略授权"两种IAM授权方式中选择一种，并配置相应权限：
  - 如果使用**角色与策略授权** （旧版IAM，即IAM v3接口），需具备**obs:bucket:PutBucketWebsite** 权限，授权操作请参见[创建IAM自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)。
  
  - 如果使用**身份策略授权** （新版IAM，即IAM v5接口），如下表所示，需具备**obs:bucket:putBucketWebsite** 权限，授权操作请参见[创建IAM自定义身份策略](https://support.huaweicloud.com/usermanual-iam5/iam_01_0917.html)。
    
    | 授权项 Action | 访问级别 Access Level | 资源类型（\*为必须） Resource Type (\*: required) | [条件键](https://support.huaweicloud.com/api-obs/obs_04_0112.html#ZH-CN_TOPIC_0000002375307974__condition_table) Condition Key                                                                                                                                                                                                                                                 | [别名](https://support.huaweicloud.com/iam5_faq/iam_01_1103.html) Alias | 依赖的授权项 Dependencies |
    |:---|:---|:---|:---|:---|:---|
    | obs:bucket:putBucketWebsite                         | Write                                                     | bucket \*                                                                     | - [g:EnterpriseProjectId](https://support.huaweicloud.com/usermanual-iam5/iam_01_0934.html#section2)  - [g:ResourceTag/\<tag-key\>](https://support.huaweicloud.com/usermanual-iam5/iam_01_0934.html#section2)                            | -                                                                                                          | -                                                  |
    | obs:bucket:putBucketWebsite                         | Write                                                     | -                                                                              | - obs:EpochTime  - obs:SourceIp  - obs:TlsVersion  - obs:CustomDomain   | -                                                                                                          | -                                                  |
       
    
   
- 如果使用**桶策略** 进行授权，需具备**obs:bucket:PutBucketWebsite** 权限，具体操作请参见[自定义创建桶策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0123.html)。
 
#### URI
PUT /
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-obs/obs_04_0006.html)。调用前需要先[计算API签名](https://support.huaweicloud.com/api-obs/obs_04_0009.html)，并将签名添加到请求中。
您还可以使用[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/OBS/doc?api=SetBucketWebsite)在线调试接口。
#### 请求消息样式
```
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）
表1URI参数 
| 参数       | 是否必选 | 参数类型 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| website | 是   | 字符串  | **参数解释**： 用于标识API接口与桶的网站设置有关。 **约束限制**： 计算签名时，请在CanonicalizedResource中添加"/BucketName/?website"，详情参见[签名计算](https://support.huaweicloud.com/api-obs/obs_04_0010.html)。 **取值范围**： website **默认取值**： 不涉及 |
   
#### 请求头参数（Request headers）
该请求使用公共请求头，具体参见[表3](https://support.huaweicloud.com/api-obs/obs_04_0007.html#ZH-CN_TOPIC_0136436606__table25197309)。
 #### 请求体参数（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]描述。
 
 表3设定重定向规则Website配置元素 
| 参数                  | **是否必选** | 参数类型        | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| 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 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                  |
   
#### 响应消息样式
```
HTTP/1.1 status_code
Date: date
Content-Length: length
```
#### 响应头 (Response Headers)
该请求的响应消息使用公共响应头，具体请参考[表1](https://support.huaweicloud.com/api-obs/obs_04_0013.html#ZH-CN_TOPIC_0173612084__d0e686)。
#### 响应体 (Response Body)
该请求的响应消息不带消息元素。
#### 错误响应消息
无特殊错误，所有错误已经包含在[错误码概述](https://support.huaweicloud.com/api-obs/obs_04_0115.html)中。
#### 请求示例：将该桶的所有请求重定向至其他桶或URL
```
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
```
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，无需手动计算签名。
| [Java](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_1603.html) | [Python](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0824.html) | [C](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_1203.html) | [Go](https://support.huaweicloud.com/sdk-go-devg-obs/obs_33_0426.html) | [BrowserJS](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_1203.html) | [.NET](https://support.huaweicloud.com/sdk-dotnet-devg-obs/obs_25_1203.html) | [Android](https://support.huaweicloud.com/sdk-android-devg-obs/obs_26_1203.html) | [iOS](https://support.huaweicloud.com/sdk-ios-devg-obs/obs_27_1202.html) | [PHP](https://support.huaweicloud.com/sdk-php-devg-obs/obs_28_1203.html) | [Node.js](https://support.huaweicloud.com/sdk-nodejs-devg-obs/obs_29_1203.html) |
|---|---|---|---|---|---|---|---|---|---|
   
#### 相关文档
- 了解更多有关静态网站信息，请参见[静态网站托管](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829093.html)。
- API操作涉及的计费项参见[计费项](https://support.huaweicloud.com/price-obs/obs_42_0002.html)。
 
