# 静态网站托管
#### 使用场景
OBS服务允许在桶上托管静态网站，支持索引页、错误页展示和页面跳转。您可以将静态网站文件上传至OBS的桶中，并对这些文件赋予匿名用户可读权限，然后将该桶配置成静态网站托管模式，就可以实现在OBS上托管静态网站了。
静态网站通常仅包含静态网页，以及可能包含部分可在客户端运行的脚本，如JavaScript、Flash等。相比之下，动态网站则依赖于服务器端处理脚本，包括PHP、JSP或ASP.Net等。OBS当前尚不支持服务器端运行脚本。
图1静态网站示意图   
![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002523946594.png "点击放大")
在设置了静态网站托管后，有以下两种方式访问OBS。
- 资源管理方式：资源管理方式通过普通的域名访问OBS。您可以使用API及SDK方式，结合带有终端节点（Endpoint）的OBS默认域名，实现普通的上传、下载、删除、列举等桶和对象操作。
- 静态网站方式：静态网站方式通过特定的域名访问OBS。使用静态网站访问时，根据配置好的域名托管规则，实现访问目录的索引页、错误页展示和访问页面资源的跳转。
修改静态网站托管设置后会在两分钟内生效，静态网站托管设置生效后，用户可以通过如下形式的网址访问静态资源：
```
https://静态网站访问域名/对象名
http://静态网站访问域名/对象名
```
其中静态网站访问域名的结构为：BucketName.obs-website.Endpoint，BucketName为桶名，Endpoint为终端节点，各区域的终端节点详情请参见[地区和终端节点](https://developer.huaweicloud.com/endpoint)。例如您想使用静态网站访问域名访问位于华北-北京四的名为testbucket桶，华北-北京四的Endpoint为cn-north-4.myhuaweicloud.com，则此时对应的静态网站访问域名应该为testbucket.obs-website.cn-north-4.myhuaweicloud.com。
![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/note_3.0-zh-cn.png)
- 尽量避免目标桶名中带有"."，否则通过HTTPS访问时可能出现客户端校验证书出错。
- 静态网站托管场景需要设置公共读权限，当用户通过公网访问静态网站文件时，会产生[公网流出流量费用](https://support.huaweicloud.com/price-obs/obs_42_0005.html)和[请求费用](https://support.huaweicloud.com/price-obs/obs_42_0004.html)。
 
为了使您的客户可以访问网站终端节点上的内容，您必须使您的所有内容公开可读。这样，您可以使用对象上的桶策略或ACL来授予必要的权限。
资源管理方式和静态网站方式之间的主要差异如下：
| 主要差异               | 资源管理方式       | 静态网站方式            |
|:---|:---|:---|
| 访问控制               | 同时支持公共内容和私有内容 | 仅支持公开可读的内容        |
| 错误消息处理             | 返回XML格式的错误响应 | 返回HTML文档          |
| 重定向支持              | 不适用          | 同时支持对象级和桶级重定向     |
| 支持的请求              | 支持所有桶和对象操作   | 仅支持对象上的GET和HEAD请求 |
| 对桶根级的GET和HEAD请求的响应 | 返回桶中对象key的列表 | 返回配置中指定的索引文档      |
   
#### 注意事项
![](https://support.huaweicloud.com/usermanual-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。
#### 设置静态网站托管
**概述**
如果要为静态网站托管配置桶，则要将网站配置添加到桶。该配置包含以下信息：
**默认首页**
当您键入诸如http://example.com的URL时，您不是在请求特定的页面。在这种情况下，Web服务器将提供默认页面，该页面包含了请求的网站内容的目录。此默认页面称为默认首页，大多数情况下，它被命名为index.html。当您为网站托管配置桶时，您必须指定默认首页。当对根域或任何子文件夹发出请求时，OBS将返回此默认首页。
**默认404错误页面**
如果出现错误，则OBS将返回HTML默认404错误页面。对于4XX类错误，您可以选择性地提供自定义默认404错误页面，您可以在该文档中向您的用户提供其他指南。
**重定向所有请求**
如果根域为example.com，且您需要响应对http://example.com和http://www.example.com的请求，则可以创建名为example.com和www.example.com的两个桶，仅在一个桶中保留网站内容（如example.com），将另一个桶配置为将所有请求重定向到example.com桶。
**高级条件重定向**
您可以根据请求中的特定对象名称或前缀，或者根据响应代码按条件对请求进行重定向。例如，假设您在桶中删除或重命名了某个对象。您可以添加一个将请求重定向到其他对象的路由规则。
通过设置重定向规则特定请求，设置语法格式如下：
```
<WebsiteConfiguration> 
    <IndexDocument> 
        <Suffix>index.html</Suffix></IndexDocument> 
    <ErrorDocument> 
        <Key>SomeErrorDocument.html</Key> 
    </ErrorDocument> 
    <RoutingRules> 
        ...RoutingRules...
    </RoutingRules> 
</WebsiteConfiguration>
```
RoutingRules语法格式如下，中括号\[\]中的内容为可选项：
```
<RoutingRules> = 
    <RoutingRules> 
        <RoutingRule>...</RoutingRule> 
        [<RoutingRule>...</RoutingRule> ...] 
    </RoutingRules> 
<RoutingRule> = 
    <RoutingRule> 
        [ <Condition>...</Condition> ] 
        <Redirect>...</Redirect> 
    </RoutingRule> 
<Condition> = 
    <Condition>  
        [ <KeyPrefixEquals>...</KeyPrefixEquals> ] 
        [ <HttpErrorCodeReturnedEquals>...</HttpErrorCodeReturnedEquals> ] 
    </Condition> 
<Redirect> = 
    <Redirect> 
        [ <HostName>...</HostName> ] 
        [ <Protocol>...</Protocol> ] 
        [ <ReplaceKeyPrefixWith>...</ReplaceKeyPrefixWith> ] 
        [ <ReplaceKeyWith>...</ReplaceKeyWith> ][ 
        <HttpRedirectCode>...</HttpRedirectCode> ] 
    </Redirect>
```
重定向所有请求Website配置元素和设定重定向规则Website配置元素，详情请参见[设置桶的网站配置请求消息元素](https://support.huaweicloud.com/api-obs/obs_04_0071.html#section4)。
以下是一些示例：
**例1** ：**修改对象名前缀进行重定向**
假设您的桶包含了以下对象：
index.html
docs/article1.html
docs/article2.html
现在，您决定将该文件夹从docs/重命名为documents/。修改后，将需要对前缀/docs的请求重定向到documents/。例如，对docs/article1.html的请求需要重定向到documents/article1.html。
在这种情况下，您可以将以下路由规则添加到网站配置中：
```
<RoutingRules> 
    <RoutingRule> 
    <Condition> 
      <KeyPrefixEquals>docs/</KeyPrefixEquals> 
    </Condition> 
    <Redirect> 
      <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith> 
    </Redirect> 
    </RoutingRule> 
  </RoutingRules>
```
**例2** **：把发往已删除的文件夹的请求重定向到指定页面**
假设您删除了images/文件夹（即，您删除了对象名前缀为images/的所有对象）。您可以添加路由规则，该规则将把对象名前缀为images/的所有对象的请求重定向到名为folderdeleted.html的页面。
```
<RoutingRules> 
    <RoutingRule> 
    <Condition> 
       <KeyPrefixEquals>images/</KeyPrefixEquals> 
    </Condition> 
    <Redirect> 
      <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith> 
    </Redirect> 
    </RoutingRule> 
  </RoutingRules>
```
**例3** **：为HTTP** **错误进行重定向**
假设在未找到请求的对象时，需要将请求重定向到www.example.com。您可以添加重定向规则，以便当返回HTTP状态代码404（未找到）时，站点访问者可重定向到www.example.com。以下示例也将在重定向中插入对象名前缀report-404/。例如，如果您请求页面ExamplePage.html，且它导致了HTTP 404错误，该请求将重定向到www.example.com上的页面report-404/ExamplePage.html。如果没有路由规则，且发生了HTTP错误404，将返回在配置中指定的错误文档。
```
<RoutingRules> 
    <RoutingRule> 
    <Condition> 
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals > 
    </Condition> 
    <Redirect> 
      <HostName>www.example.com</HostName> 
      <ReplaceKeyPrefixWith>report-404/</ReplaceKeyPrefixWith> 
    </Redirect> 
    </RoutingRule> 
  </RoutingRules>
```
#### 索引文档支持
索引文档是当对网站的根或任何子文件夹发出请求时返回的网页。例如，如果用户在浏览器中输入http://www.example.com，则该用户没有请求任何特定页面。在这种情况下，OBS将提供索引文档，该文档有时也称为默认页面。
当您将您的桶配置为网站时，您应该提供索引文档的名称。您必须上传具有此名称的对象并将其配置为公开可读。
根级URL的尾部斜杠是可选的。例如，如果您将具有index.html的网站配置为索引文档，以下任意一个URL将返回index.html。
```
http://bucketname.obs-website.example.com/
http://bucketname.obs-website.example.com
```
在OBS中，对象在桶中是扁平化存储的；它不会像计算机上的文件系统那样提供任何分层结构。您可以通过使用表示文件夹结构的对象名称创建逻辑层级结构。例如，考虑具有三个对象的桶和以下对象名。
- sample1.jpg
- photos/2006/Jan/sample2.jpg
- photos/2006/Feb/sample3.jpg
虽然它们没有按任何物理分层组织进行存储，但您可以从对象名推断以下逻辑文件夹结构。
- sample1.jpg对象位于桶的根级
- sample2.jpg对象位于photos/2006/Jan子文件夹中。
- sample3.jpg对象位于photos/2006/Feb子文件夹中。
 
#### 自定义错误文档支持
[表1]列出了发生错误时OBS返回的HTTP响应代码的子集。
 表1错误码列表 
| HTTP错误代码                          | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|
| **301** **永久移动**                  | 当用户将请求直接发送到OBS网站终端节点时，OBS返回**301 Moved Permanently (301 永久移动)**响应。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **302 Found (302** **已找到)**        | 当OBS收到对不包含尾部斜杠的键x的请求时，它首先查找键名称为x的对象。如果未找到对象，则OBS确定该请求是针对子文件夹x发出的，并通过在末尾添加斜杠重定向请求并返回**302 Found (302 已找到)**。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **304 Not Modified (304** **未修改)** | OBS用户请求标头If-Modified-Since、If-Unmodified-Since以确定所请求的对象是否与客户端保存的缓存副本相同。如果对象相同，网站终端节点将返回**304 Not Modified**响应。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **403** **禁止访问**                  | 当用户请求转换为不可公开读取的对象时，网站终端节点的响应包含**403 Forbidden**。对象所有者必须使用桶策略或ACL使该对象公开可读。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **404** **未找到**                   | 由于以下原因，网站终端节点的响应包含**404 Not Found**： - OBS确定网站URL引用了不存在的对象键  - OBS推断该请求针对不存在的索引文档  - 在URL中指定的桶不存在  - 在URL中指定的桶存在，但它未配置为网站   您可以创建为**404 Not Found**返回的自定义文档。确保该文档已上传到配置为网站的桶，且网站托管配置已设置为使用该文档。 |
| **500 Service Error**              | 当出现内部服务器错误时，网站终端节点的响应包含**500 Service Error**。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **503** **服务不可用**                 | 当OBS确定您需要降低请求频率时，网站终端节点的响应包含**503 Service Unavailable (503 服务不可用)**。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
#### 网站访问所需的权限
当您将桶配置为网站时，您必须使要提供的对象公开可读。要执行此操作，您需要编写向每个人授予GetObject权限的桶策略。在网站终端节点上，如果用户请求的对象不存在，则OBS返回HTTP响应代码404 (Not Found)。如果该对象存在，但您未授予对对象的读取权限，则网站终端节点将返回HTTP响应代码403 (Access Denied)。用户可以使用该响应代码推断特定对象是否存在。如果您不需要此行为，则不要启用对桶的网站支持。
![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/note_3.0-zh-cn.png)
静态网站托管场景需要设置公共读权限，当所有用户访问静态网站文件时，会产生公网流出流量费用和请求费用。
以下示例桶策略向每个人授予了访问指定文件夹中的对象的权限。有关桶策略的更多信息，请参见[桶策略](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0004.html)。
```
{ 
   "Statement":[{ 
    "Sid":"PublicReadGetObject", 
      "Effect":"Allow", 
      "Principal": {"ID":"*"}, 
      "Action":["GetObject"], 
      "Resource":["example-bucket/*"  ] 
    } 
  ] 
}
```
![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/notice_3.0-zh-cn.png)
桶策略仅适用于桶拥有者拥有的对象。如果桶包含非桶拥有者拥有的对象，则应使用对象ACL对这些对象授予公有READ权限。
您可以通过桶策略或对象ACL授予对您的对象的公开读取权限。如果要使用ACL使对象公开可读，您可以向Everyone授予READ权限，如以下授权元素所示。您可以将此授权元素添加到对象ACL。有关管理ACL的信息，请参见[ACL权限控制方式](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0005.html)。
```
<Grant> 
  <Grantee> 
    <Canned>Everyone</Canned> 
  </Grantee> 
  <Permission>READ</Permission> 
</Grant>
```
#### 与其他功能的关系
| 功能    | 静态网站托管与该功能的关系                                                                                                                                          | 参考文档                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| 跨域资源共享   | 默认情况下，托管在OBS的静态网站仅允许响应同域网站的访问请求。通过对保存静态网站资源的OBS桶进行跨域资源共享配置，可以实现跨域访问功能。                                                                                | [配置CORS实现跨域访问OBS](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0066036542.html#ZH-CN_TOPIC_0000001858344726)                                                                                                                                                                                                                                                                                                                                                                  |
| 自定义域名配置 | OBS支持通过自定义域名访问托管在OBS上的静态网站，用户无需修改网站代码，即可使用原域名访问网站。                                                                                                 | [配置自定义域名](https://support.huaweicloud.com/usermanual-obs/obs_03_0032.html#ZH-CN_TOPIC_0000001965228938) [使用自定义域名托管静态网站](https://support.huaweicloud.com/bestpractice-obs/obs_05_0610.html)                                                                                                                                                                                            |
| CDN加速   | 默认情况下，用户访问托管在OBS的静态网站是通过URL直接从OBS请求数据。一般情况下文件只存储在一个区域，不同区域的用户访问OBS的响应速度存在差异。在需要频繁访问的场景下，直接访问OBS来获取相应文件，还会消耗大量的流量费用。为提升用户访问体验，且降低存储成本，可以选择通过CDN加速访问静态网站。 | [配置加速域名](https://support.huaweicloud.com/usermanual-obs/obs_03_0600.html#ZH-CN_TOPIC_0000001965388738) [使用自定义域名托管静态网站](https://support.huaweicloud.com/bestpractice-obs/obs_05_0610.html) [通过CDN加速访问OBS](https://support.huaweicloud.com/bestpractice-obs/obs_05_0510.html) |
| 防盗链     | 用户将网站托管在OBS后，为了防止网站数据被其他人盗链，OBS支持基于HTTP header中表头字段referer的防盗链方法。                                                                                  | [配置防盗链防止非法流量盗用](https://support.huaweicloud.com/usermanual-obs/obs_03_0341.html#ZH-CN_TOPIC_0000001904425217)                                                                                                                                                                                                                                                                                                                                                                               |
   
#### 前提条件
静态网站所需的网页文件已上传到指定桶中。
桶内的静态网站文件必须配置为所有用户可访问。
如果静态网站文件为"归档存储"或"深度归档存储"类别，则需要先恢复，具体操作步骤请参见[恢复归档或深度归档存储对象](https://support.huaweicloud.com/usermanual-obs/obs_03_0320.html#ZH-CN_TOPIC_0000001919749180)。
#### 使用方式
OBS支持通过[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)、API、SDK方式配置静态网站托管，不支持通过OBS Browser+、obsutil方式配置静态网站托管。
#### 使用OBS控制台
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在桶列表中，单击待操作的桶，进入"对象"页面。
3. **可选** ：如果还未将桶内静态网站文件配置为任何用户可访问，请执行本步骤配置所有账户的访问权限。如果已经配置，请跳过此步骤。
   
   参考[对所有账号授予指定对象的读权限](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0033.html)为所有账号授予静态网站文件的读取权限。
   如果桶中只有静态网站文件，则配置桶策略为"对象只读"，使桶内所有文件能被公开访问。
   1. 单击"权限控制\>桶策略"。
   
   2. 单击"创建"。
   
   3. 配置桶策略信息。
      图2配置对象只读权限
      ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000001948501565.png "点击放大")
      表2配置公共读策略参数配置说明 
      | 参数                                                                                                           || 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      |:---|---|:---|
      | 策略配置方式                                                                                                       || - 可视化视图：采用可视化界面配置，操作简单。  - JSON视图：代码模式配置，采用JSON语法格式进行配置。   此处以可视化视图为例，JSON视图的说明请参见[自定义创建桶策略（JSON视图）](https://support.huaweicloud.com/usermanual-obs/obs_03_0141.html#ZH-CN_TOPIC_0000001858344854)。 |
      | 策略名称                                                                                                         || 输入自定义桶策略的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      | 策略内容 | 效力     | 允许                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      | 策略内容 | 被授权用户 | 被授权用户：所有账号                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      | 策略内容 | 授权资源 | - 资源范围：指定对象  - 资源路径：\*（\*表示桶内所有对象）                                                                                                                                              |
      | 策略内容 | 授权操作  | - 动作范围：模板配置  - 模板：对象只读                                                                                                                                                         |
         
      
   
   4. 单击"创建"，完成桶策略创建。
   
   5. 权限配置信息可以在桶策略列表查看。
      图3查看桶策略列表权限配置信息   
      ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000001888411477.png "点击放大") 
   
   
   
   
4. 在左侧导航栏单击"数据管理 \> 静态网站托管"，进入"静态网站托管"界面。
5. 单击"配置静态网站托管"，系统弹出"配置静态网站托管"对话框。
6. 打开"状态"开关，配置相关参数。 
   表3托管模式选择"配置到当前桶" 
   | 参数      | 示例                                                                                                               | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   |:---|:---|:---|
   | 状态       | **开启**                                                                                                          | -                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | 托管模式     | **配置到当前桶**                                                                                                      | 选择"配置到当前桶"。                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 默认首页    | **index.html**                                                                                                 | - 默认首页：即访问静态网站时的默认首页。当使用OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)配置静态网站托管时，仅支持"html"格式的网页文件；当使用API的方式配置时，OBS不进行限制，用户必须指定对象的"Content-Type"。 OBS仅支持配置桶根目录下的文件（如"index.html"）作为默认首页，暂不支持按目录层级的方式（如"/page/index.html"）配置默认首页。    |
   | 默认404错误页面 | **error.html**                                                                                                  | - 默认404错误页面：即访问静态网站遇到错误时，OBS返回给用户的错误页面。当使用OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)配置静态网站托管时，仅支持桶根目录下html、jpg、png、bmp、webp格式的文件；当使用API的方式配置时，OBS不进行限制，用户必须指定对象的"Content-Type"。                                            |
   | 重定向规则      | **参见[示例]** | 在"重定向规则"中配置重定向规则。满足重定向规则的请求将被重定向到指定主机或页面。 "重定向规则"采用JSON格式编写，可以包含多条重定向规则，每条重定向规则包含一个Condition和一个Redirect，参数说明如[表5]所示。                                                                                                                             |
      
   表4托管模式选择"重定向请求" 
   | 参数      | 示例             | 说明          |
   |:---|:---|:---|
   | 状态       | **开启**         | -           |
   | 托管模式    | 重定向请求            | 选择"重定向请求"  |
   | 重定向页面 | www.example.com | 桶访问的域名或URL |
      
   图4配置静态网站托管
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000001948506657.png "点击放大")
    表5重定向参数说明 
   | 容器                                                                                                 | 键值                          | 键值说明                                                                                                                                                                                                                                                                                                                                                                                             |
   |:---|:---|:---|
   | Condition 说明： 此参数为可选参数。 | KeyPrefixEquals            | 可选项，重定向生效时的对象名前缀。当向对象发送请求时，如果对象名前缀等于这个值，那么重定向生效。 例如：重定向ExamplePage.html对象的请求，KeyPrefixEquals设为ExamplePage.html。                                                                                                                                                                                     |
   | Condition 说明： 此参数为可选参数。 | HttpErrorCodeReturnedEquals | 可选项，重定向生效时的HTTP错误码。当发生错误时，如果错误码等于这个值，那么重定向生效。 例如：当返回的HTTP错误码为404时重定向到NotFound.html，可以将Condition中的HttpErrorCodeReturnedEquals设置为404，Redirect中的ReplaceKeyWith设置为NotFound.html。                                                                                                                      |
   | Redirect                                                                                            | Protocol                     | 重定向请求生效时使用的协议。取值为**http** 或**https** ，如不设置，默认为**http**。                                                                                                                                                                                                                                                                                                                                          |
   | Redirect                                                                                            | HostName                    | 重定向请求生效时使用的主机名。如不设置，代表重定向至原请求的HostName。                                                                                                                                                                                                                                                                                                                                                          |
   | Redirect                                                                                            | ReplaceKeyPrefixWith         | 描述重定向请求时使用的对象名前缀，请求中的对象名会将KeyPrefixEquals的内容替换为ReplaceKeyPrefixWith的内容，与ReplaceKeyWith互斥，只能二选一。 例如：想把所有对docs（目录下的对象）的请求重定向到documents（目录下的对象），可以将Condition中的KeyPrefixEquals设置为docs，Redirect中的ReplaceKeyPrefixWith设置为documents。那么对于对象名称为"docs/a.html"，重定向的结果为"documents/a.html"。                   |
   | Redirect                                                                                            | ReplaceKeyWith              | 描述重定向请求时使用的对象名，请求中的整个对象名会被替换为ReplaceKeyWith的内容。与ReplaceKeyPrefixWith互斥，只能二选一。 例如：想把所有对"docs"目录下的所有对象的请求重定向到"documents/error.html"，可以将Condition中的KeyPrefixEquals设置为docs，Redirect中的ReplaceKeyWith设置为"documents/error.html"。那么对于对象名称为"docs/a.html"和"docs/b.html"，重定向的结果都为"documents/error.html"。 |
   | Redirect                                                                                            | HttpRedirectCode             | 响应中的HTTP状态码。默认值为301，表示永久重定向到Redirect指定的位置，也可根据业务实际情况设置。                                                                                                                                                                                                                                                                                                                                          |
      
   **重定向规则示例**
   - 示例一：对所有前缀为"folder1/"对象的请求，自动重定向至主机"www.example.com"上前缀为"target.html"的页面，并使用https协议。
     ```
     [
     {
     "Condition": {
     "KeyPrefixEquals": "folder1/"
     },
     "Redirect":{
     "Protocol": "https",
     "HostName": "www.example.com",
     "ReplaceKeyPrefixWith": "target.html"
     }
     }
     ]
     ```
     
   
   - 示例二：对所有前缀为"folder2/"对象的请求，自动重定向至本OBS桶中前缀为"folder/"的对象上。
     ```
     [
     {
     "Condition": {
     "KeyPrefixEquals": "folder2/"
     },
     "Redirect":{
     "ReplaceKeyPrefixWith": "folder/"
     }
     }
     ]
     ```
     
   
   - 示例三：对所有前缀为"folder.html"对象的请求，自动重定向至本OBS桶的"folderdeleted.html"对象上。
     ```
     [
     {
     "Condition": {
     "KeyPrefixEquals": "folder.html"
     },
     "Redirect":{
     "ReplaceKeyWith": "folderdeleted.html"
     }
     }
     ]
     ```
     
   
   - 示例四：在未找到请求对象返回HTTP状态码404时，自动重定向至主机"www.example.com"上前缀为"report-404/" 的页面。
     例如，如果您请求页面ExamplePage.html，且它导致了HTTP 404错误，该请求将重定向至www.example.com上的report-404/ExamplePage.html页面。如果没有设置404的重定向规则，在发生HTTP 404错误时将返回配置的默认404错误页面。
     ```
     [
     {
     "Condition": {
     "HttpErrorCodeReturnedEquals": "404"
     },
     "Redirect":{
     "HostName": "www.example.com",
     "ReplaceKeyPrefixWith": "report-404/"
     }
     }
     ]
     ```
     
   
   
   
   
7. 单击"确定"。 
   在OBS上托管静态网站配置生效后，您可以通过静态网站托管访问域名访问该静态网站。
   ![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/note_3.0-zh-cn.png)
   由于浏览器缓存等原因，您可能需要清除浏览器缓存后才能查看到预期效果。
   
   
 
#### 使用API
[设置桶的网站配置](https://support.huaweicloud.com/api-obs/obs_04_0071.html)
#### 使用SDK
| [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) |
|---|---|---|---|---|---|---|---|---|---|
   
