website(静态网站托管及回源配置)

静态网站托管功能允许您将静态网站托管到OSS的存储空间(Bucket),并使用Bucket的访问域名访问这个网站。Bucket配置静态网站托管后,当您的用户向OSS请求的数据不存在时,可通过设置回源规则确保其仍然可以获取正确的数据。website命令用于添加、修改、查询、删除Bucket的静态网站托管以及回源配置。

注意事项

  • 要添加或修改Website配置,您必须具有oss:PutBucketWebsite权限;要获取website配置,您必须具有oss:GetBucketWebsite权限;要删除Website配置,您必须具有oss:DeleteBucketWebsite权限。具体操作,请参见为RAM用户授权自定义的权限策略

  • 从ossutil 1.6.16版本开始,命令行中Binary名称支持直接使用ossutil,您无需根据系统刷新Binary名称。如果您的ossutil版本低于1.6.16,则需要根据系统刷新Binary名称。更多信息,请参见命令行工具ossutil命令参考

  • Bucket配置静态网站托管后,当您的用户向OSS请求的数据不存在时,本应返回404错误。如果您设置了回源规则,并填写了数据的正确地址,则用户可以通过回源规则从OSS获取到正确的数据。

    有关静态网站托管功能的更多信息,请参见静态网站托管概述

    有关回源功能的更多信息,请参见回源概述

  • 当您在OSS ON云盒中使用该命令时:

    1. 将配置文件中的Endpoint替换为云盒Endpoint。更多信息,请参见云盒Endpoint

    2. 在本文已有示例的基础上添加--sign-version--region以及--cloudbox-id选项。关于这三个选项的具体用法,请参见通用选项

添加或修改Website配置

如果Bucket此前未添加过Website配置,则使用该命令将为Bucket添加Website配置。如果Bucket此前已添加Website配置,则使用该命令将直接覆盖已有的Website配置。

添加或修改Website配置步骤如下:

  1. 创建本地文件,并在文件中添加Website配置。

  2. 将Website配置添加到目标Bucket。

添加或修改Website配置的命令格式及示例如下:

  • 命令格式

    ossutil website --method put oss://bucketname local_xml_file

    参数说明如下:

    参数

    说明

    bucketname

    待添加或修改Website配置的Bucket名称。

    local_xml_file

    配置Website规则的本地文件名称,例如localfile.xml

  • 使用示例

    1. 在本地创建名为localfile.xml文件,并根据使用场景配置Website规则。

      如下为Website的完整配置参考示例,示例中包含了静态网站托管以及回源配置。您也可以根据具体的业务场景需求,选择仅添加静态网站托管或者回源配置。

      • 静态网站托管配置

        配置示例中通过<IndexDocument>字段指定静态页面的默认首页为index.html,<ErrorDocument>字段指定静态页面的默认404页为error.html

      • 回源配置

        配置示例中通过<RoutingRules>字段指定回源规则。有关回源规则中包含的各参数配置详情,请参见设置回源规则

      <?xml version="1.0" encoding="UTF-8"?>
       <WebsiteConfiguration>
           <IndexDocument>
               <Suffix>index.html</Suffix>
           </IndexDocument>
           <ErrorDocument>
               <Key>error.html</Key>
           </ErrorDocument>
           <RoutingRules>
               <RoutingRule>
                   <RuleNumber>1</RuleNumber>
                   <Condition>
                       <KeyPrefixEquals>abc/</KeyPrefixEquals>
                       <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
                   </Condition>
                   <Redirect>
                       <RedirectType>Mirror</RedirectType>
                       <PassQueryString>true</PassQueryString>
                       <MirrorURL>http://example.com/</MirrorURL>
                       <MirrorPassQueryString>true</MirrorPassQueryString>
                       <MirrorFollowRedirect>true</MirrorFollowRedirect>
                       <MirrorCheckMd5>false</MirrorCheckMd5>
                       <MirrorHeaders>
                         <PassAll>true</PassAll>
                         <Pass>myheader-key1</Pass>
                         <Pass>myheader-key2</Pass>
                         <Remove>myheader-key3</Remove>
                         <Remove>myheader-key4</Remove>
                         <Set>
                           <Key>myheader-key5</Key>
                           <Value>myheader-value5</Value>
                         </Set>
                       </MirrorHeaders>
                   </Redirect>
               </RoutingRule>
               <RoutingRule>
                   <RuleNumber>2</RuleNumber>
                   <Condition>
                     <KeyPrefixEquals>abc/</KeyPrefixEquals>
                     <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
                     <IncludeHeader>
                       <Key>host</Key>
                       <Equals>test.oss-cn-beijing-internal.aliyuncs.com</Equals>
                     </IncludeHeader>
                   </Condition>
                   <Redirect>
                     <RedirectType>AliCDN</RedirectType>
                     <Protocol>http</Protocol>
                     <HostName>example.com</HostName>
                     <PassQueryString>false</PassQueryString>
                     <ReplaceKeyWith>prefix/${key}.suffix</ReplaceKeyWith>
                     <HttpRedirectCode>301</HttpRedirectCode>
                   </Redirect>
               </RoutingRule>
           </RoutingRules>
       </WebsiteConfiguration>
    2. 为examplebucket添加Website配置。

      ossutil website --method put oss://examplebucket localfile.xml

      以下输出结果表明已成功添加Website配置。

      0.299514(s) elapsed

获取website配置

  • 命令格式

    ossutil website --method get oss://bucketname [local_xml_file]

    参数说明如下:

    参数

    说明

    bucketname

    待获取Website配置的目标Bucket名称。

    local_xml_file

    用于存放Website配置的本地文件名称,例如localfile.xml。如果未指定此参数,则Website配置将直接输出到屏幕。

  • 使用示例

    • 获取目标存储空间examplebucket的Website配置,并将配置结果写入本地文件localfile.xml

      ossutil website --method get oss://examplebucket localfile.xml

      以下输出结果表明已成功获取Website配置,并将其写入本地localfile.xml文件。

      0.212407(s) elapsed
    • 获取目标存储空间examplebucket的Website配置,并将配置结果直接输出屏幕。

      ossutil website --method get oss://examplebucket

      以下输出结果表明已成功获取Website配置。

      <?xml version="1.0" encoding="UTF-8"?>
      <WebsiteConfiguration>
        <IndexDocument>
          <Suffix>index.html</Suffix>
          <SupportSubDir>false</SupportSubDir>
          <Type>0</Type>
        </IndexDocument>
        <ErrorDocument>
          <Key>error.html</Key>
        </ErrorDocument>
        <RoutingRules>
          <RoutingRule>
            <RuleNumber>1</RuleNumber>
            <Condition>
              <KeyPrefixEquals>abc/</KeyPrefixEquals>
              <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
            </Condition>
            <Redirect>
              <RedirectType>Mirror</RedirectType>
              <PassQueryString>true</PassQueryString>
              <MirrorURL>http://example.com/</MirrorURL>
              <MirrorPassQueryString>true</MirrorPassQueryString>
              <MirrorPassOriginalSlashes>false</MirrorPassOriginalSlashes>
              <MirrorFollowRedirect>true</MirrorFollowRedirect>
              <MirrorIsExpressTunnel>false</MirrorIsExpressTunnel>
              <MirrorUserLastModified>false</MirrorUserLastModified>
              <MirrorCheckMd5>false</MirrorCheckMd5>
              <MirrorSwitchAllErrors>false</MirrorSwitchAllErrors>
              <MirrorHeaders>
                <PassAll>true</PassAll>
                <Pass>myheader-key1</Pass>
                <Pass>myheader-key2</Pass>
                <Remove>myheader-key3</Remove>
                <Remove>myheader-key4</Remove>
                <Set>
                  <Key>myheader-key5</Key>
                  <Value>myheader-value5</Value>
                </Set>
              </MirrorHeaders>
              <MirrorUsingRole>false</MirrorUsingRole>
              <MirrorAllowHeadObject>false</MirrorAllowHeadObject>
              <EnableReplacePrefix>false</EnableReplacePrefix>
            </Redirect>
          </RoutingRule>
          <RoutingRule>
            <RuleNumber>2</RuleNumber>
            <Condition>
              <IncludeHeader>
                <Key>host</Key>
                <Equals>test.oss-cn-beijing-internal.aliyuncs.com</Equals>
              </IncludeHeader>
              <KeyPrefixEquals>abc/</KeyPrefixEquals>
              <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
            </Condition>
            <Redirect>
              <RedirectType>AliCDN</RedirectType>
              <Protocol>http</Protocol>
              <HostName>example.com</HostName>
              <PassQueryString>false</PassQueryString>
              <ReplaceKeyWith>prefix/${key}.suffix</ReplaceKeyWith>
              <EnableReplacePrefix>false</EnableReplacePrefix>
              <HttpRedirectCode>301</HttpRedirectCode>
            </Redirect>
          </RoutingRule>
        </RoutingRules>
      </WebsiteConfiguration>
      
      0.157648(s) elapsed

删除Website配置

  • 命令格式

    ossutil website --method delete oss://bucketname
  • 使用示例

    删除目标存储空间examplebucket的Website配置。

    ossutil website --method delete oss://examplebucket

    以下输出结果表明已成功删除Website配置。

    0.212409(s) elapsed

通用选项

当您需要通过命令行工具ossutil切换至另一个地域的Bucket时,可以通过-e选项指定该Bucket所属的Endpoint。当您需要通过命令行工具ossutil切换至另一个阿里云账号下的Bucket时,可以通过-i选项指定该账号的AccessKey ID,并通过-k选项指定该账号的AccessKey Secret。

例如您需要为另一个阿里云账号下,华东1(杭州)名为testbucket的Bucket添加Website配置,命令如下:

ossutil website --method put oss://testbucket localfile.xml -e oss-cn-hangzhou.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

关于此命令的其他通用选项的更多信息,请参见通用选项