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

注意事项

  • 本文各命令行示例均基于Linux 64位系统,其他系统请将命令开头的./ossutil64替换成对应的Binary名称。详情请参见命令行工具ossutil快速入门
  • Bucket配置静态网站托管后,当您的用户向OSS请求的数据不存在时,本应返回404错误。如果您设置了回源规则,并填写了数据的正确地址,则用户可以通过回源规则从OSS获取到正确的数据。

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

    有关回源功能的更多信息,请参见管理回源设置

添加或修改Website配置

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

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

  1. 创建本地文件,并在文件中添加Website配置。
  2. 将Website配置添加到目标Bucket。

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

  • 命令格式
    ./ossutil64 website --method put oss://bucketname local_xml_file

    参数说明如下:

    参数 说明
    bucketname 待添加或修改Website配置的Bucket名称。
    local_xml_file 配置Website规则的本地文件名称,例如localfile.txt
  • 使用示例
    1. 在本地创建名为localfile.txt文件,并根据使用场景配置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配置。
      ./ossutil64 website --method put oss://examplebucket localfile.txt

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

      0.299514(s) elapsed

获取website配置

  • 命令格式
    ./ossutil64 website --method get oss://bucketname [local_xml_file]

    参数说明如下:

    参数 说明
    bucketname 待获取Website配置的目标Bucket名称。
    local_xml_file 用于存放Website配置的本地文件名称,例如localfile.txt。如果未指定此参数,则Website配置将直接输出到屏幕。
  • 使用示例
    • 获取目标存储空间examplebucket的Website配置,并将配置结果写入本地文件localfile.txt
      ./ossutil64 website --method get oss://examplebucket localfile.txt

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

      0.212407(s) elapsed
    • 获取目标存储空间examplebucket的Website配置,并将配置结果直接输出屏幕。
      ./ossutil64 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配置

  • 命令格式
    ./ossutil64 website --method delete oss://bucketname
  • 使用示例

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

    ./ossutil64 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配置,命令如下:

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

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