全部產品
Search
文件中心

Object Storage Service:website(靜態網站託管及回源配置)

更新時間:Jul 31, 2024

靜態網站託管功能允許您將靜態網站託管到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擷取到正確的資料。

    有關靜態網站託管功能的更多資訊,請參見靜態網站託管概述

    有關回源功能的更多資訊,請參見回源概述

添加或修改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****

關於此命令的其他通用選項的更多資訊,請參見通用選項