すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:PutBucketWebsite

最終更新日:Feb 23, 2024

バケットを静的Webサイトホスティングモードに設定し、リダイレクションルールを設定します。

アップロードの制限

静的webサイトは、クライアントで実行されるJavaScriptコードなどのスクリプトを含む、すべてのwebページが静的コンテンツのみで構成されるwebサイトです。 静的ページとしてObject Storage Service (OSS) オブジェクトを指定する場合、静的ページには、PHP、JSP、ASP.NETコンテンツなど、サーバーで処理する必要のあるコンテンツを含めることはできません。

  • 特徴

    PutBucketWebsite操作は、静的Webサイトホスティングモードに設定されているバケットのデフォルトのホームページ、デフォルトの404ページ、およびRoutingRuleを設定するために使用されます。 RoutingRuleは、リダイレクションルールとミラーリングベースのback-to-originルールを指定するために使用されます。 ミラーリングベースのback-to-originは、Alibaba CloudパブリッククラウドとFinance cloudをサポートしています。

  • カスタムドメイン名を使用したアクセス

    カスタムドメイン名を使用してバケットベースの静的Webサイトにアクセスするには、CNAMEを使用できます。 特定の操作の詳細については、「カスタムドメイン名のマップ」をご参照ください。

  • インデックスページとエラーページ

    バケットを静的Webサイトホスティングモードに設定すると、静的Webサイトのインデックスページとエラーページを指定できます。 指定されたインデックスページとエラーページは、バケット内のオブジェクトである必要があります。

  • ルートドメイン名への匿名アクセス

    バケットが静的Webサイトホスティングモードに設定されると、静的Webサイトのルートドメイン名への匿名アクセスのインデックスページが返されます。 静的Webサイトのルートドメイン名にアクセスするための署名付きリクエストが送信された場合、OSSはGetBucket (ListObjects) 操作の結果を返します。

リクエストの構造

PUT /? ウェブサイトHTTP/1.1
日付: GMT日付
Content-Length: ContentLength
Content-Type: application/xml
ホスト: BucketName.oss-cn-hangzhou.aliyuncs.com
権限付与: SignatureValue

<?xml version="1.0" encoding="UTF-8"?>
<WebsiteConfiguration>
    <IndexDocument>
        <Suffix>index.html</Suffix>
    </IndexDocument>
    <ErrorDocument>
        <Key>errorDocument.html</Key>
        <HttpStatus>404</HttpStatus>
    </ErrorDocument>
</WebsiteConfiguration> 

リクエストヘッダー

PutBucketLifecycleリクエストには、共通のリクエストヘッダーのみが含まれます。 詳細については、「共通リクエストヘッダー」をご参照ください。

リクエストパラメーター

  • 次の表では、WebsiteConfigurationの要素について説明します。
    要素データ型必須説明
    WebsiteConfigurationContainer必須ルートノード。

    親ノード: なし

  • 次の表に、IndexDocumentの要素を示します。
    要素データ型必須説明
    IndexDocumentContainer条件付き

    IndexDocument、ErrorDocument、RoutingRules のうち、1 つ以上のコンテナーを指定する必要があります。

    デフォルトのホームページのコンテナ。

    親ノード: WebsiteConfiguration

    接尾辞String条件付き

    IndexDocumentを指定する場合、この要素を指定する必要があります。

    デフォルトのホームページ。

    デフォルトのホームページを指定した後、名前がスラッシュ (/) で終わるオブジェクトにアクセスすると、OSSはデフォルトのホームページを返します。

    親ノード: IndexDocument

    SupportSubDirString任意サブディレクトリにアクセスしたときに、サブディレクトリ内のデフォルトのホームページにアクセスをリダイレクトするかどうかを指定します。 デフォルト値:false 有効な値:
    • true: アクセスはサブディレクトリのデフォルトのホームページにリダイレクトされます。
    • false: アクセスは、サブディレクトリではなく、ルートディレクトリのデフォルトのホームページにリダイレクトされます。

    例: デフォルトのホームページはindex.htmlに設定され、bucket.oss-cn-hangzhou.aliyuncs.com/subdir/ はアクセスします。 SupportSubDirがfalseに設定されている場合、アクセスはbucket.oss-cn-hangzhou.aliyuncs.com/index.htmlにリダイレクトされます。 SupportSubDirがtrueに設定されている場合、アクセスはbucket.oss-cn-hangzhou.aliyuncs.com/subdir/index.htmlにリダイレクトされます。

    親ノード: IndexDocument

    データ型列挙任意デフォルトのホームページが設定されていて、アクセスされたオブジェクトの名前がスラッシュ (/) で終わっておらず、オブジェクトが存在しない場合に実行する操作。 このパラメーターは、SupportSubDirがtrueに設定されている場合にのみ有効です。 RoutingRuleの後でErrorFileの前に有効になります。

    bucket.oss-cn-hangzhou.aliyuncs.com/abcへのアクセスのデフォルトのホームページがindex.htmlに設定されていて、abcオブジェクトが存在しない場合、Typeの有効な値は以下の操作に対応します。 Typeのデフォルト値は0です。

    • 0: OSSは、オブジェクト + スラッシュ (/) + ホームページ形式のabc/index.htmlという名前のオブジェクトが存在するかどうかを確認します。 オブジェクトが存在する場合、OSSは302と、URLエンコードされた /abc/ を含むLocationヘッダー値を返します。 URLエンコード /abc /は、スラッシュ (/) + オブジェクト + スラッシュ (/) 形式です。 オブジェクトが存在しない場合、OSSは404を返し、ErrorFileのチェックを続行します。
    • 1: OSSは404とNoSuchKeyを返し、引き続きErrorFileのチェックを行います。
    • 2: OSSはabc/index.htmlが存在するかどうかをチェックします。 abc/index.htmlが存在する場合、オブジェクトの内容が返されます。 abc/index.htmlが存在しない場合、OSSは404を返し、ErrorFileのチェックを続行します。

    親ノード: IndexDocument

  • 次の表に、ErrorDocumentの要素を示します。
    要素データ型必須説明
    ErrorDocumentContainer条件付き

    IndexDocument、ErrorDocument、RoutingRules のうち、1 つ以上のコンテナーを指定する必要があります。

    デフォルトの404ページを格納するために使用されるコンテナー。

    親ノード: WebsiteConfiguration

    キーString条件付き

    ErrorDocumentを指定する場合、この要素を指定する必要があります。

    エラーページ。

    エラーページを指定した後、アクセスするオブジェクトが存在しない場合、エラーページが返されます。

    親ノード: ErrorDocument

    HttpStatusString任意エラーページとともに返されるHTTPステータスコード。 デフォルト値: 404

    有効な値: 200と404

    親ノード: ErrorDocument

  • 次の表では、RoutingRules、RoutingRule、およびRuleNumberの要素について説明します。
    要素データ型必須説明
    RoutingRulesContainer条件付き

    IndexDocument、ErrorDocument、RoutingRules のうち、1 つ以上のコンテナーを指定する必要があります。

    RoutingRuleの格納に使用されるコンテナー。

    親ノード: WebsiteConfiguration

    RoutingRuleContainer任意リダイレクションルールまたはミラーリングベースのback-to-originルール。 最大20個のルールを指定できます。

    親ノード: RoutingRules

    RuleNumber正の整数条件付き

    RoutingRuleを指定する場合、この要素を指定する必要があります。

    リダイレクションルールの照合と実行に使用されるシーケンス番号。 リダイレクトルールは、この要素に基づいて照合されます。 一致が成功した場合、ルールのみが実行され、後続のルールは実行されません。

    親ノード: RoutingRule

  • 次の表では、RoutingRules、RoutingRule、およびConditionの要素について説明します。
    要素データ型必須説明
    条件Container条件付き

    RoutingRuleを指定する場合、この要素を指定する必要があります。

    マッチング条件。

    指定されたすべての条件が満たされると、ルールが実行されます。 ルールは、ルールがConditionのすべてのノードによって指定された条件を満たす場合にのみ一致したと見なされます。

    親ノード: RoutingRule

    KeyPrefixEqualsString任意オブジェクト名のプレフィックス。 指定されたプレフィックスを含む名前のオブジェクトのみがルールに一致します。

    親ノード: 条件

    HttpErrorCodeReturnedEqualsHTTP ステータスコード任意HTTP ステータスコード ルールは、指定されたオブジェクトにアクセスし、指定されたHTTPステータスコードが返された場合にのみ一致します。 リダイレクションルールがミラーリングベースのback-to-originルールの場合、この要素の値は404です。

    親ノード: 条件

    IncludeHeaderContainer任意リクエストで指定されたヘッダー。 ルールは、指定されたヘッダーがリクエストに含まれ、ヘッダー値が指定された値に等しい場合にのみ一致します。 最大10個のIncludeHeaderコンテナを指定できます。

    親ノード: 条件

    キーString必須ヘッダーのキー。The key of the header. 指定されたヘッダーがリクエストに含まれ、ヘッダー値がequalsで指定された値に等しい場合にのみ、ルールが一致します。

    親ノード: IncludeHeader

    等しいString任意ヘッダーの値。 Keyで指定されたヘッダーがリクエストに含まれ、ヘッダー値が指定された値に等しい場合にのみ、ルールが一致します。

    親ノード: IncludeHeader

    KeySuffixEqualsString任意オブジェクト名のサフィックス。 指定されたサフィックスを含む名前のオブジェクトのみがルールに一致します。

    デフォルト値は空です。これは、サフィックスが指定されていないことを示します。

    親ノード: 条件

  • 次の表に、RoutingRules、RoutingRule、およびRedirectの要素を示します。
    要素データ型必須説明
    リダイレクトContainer条件付き

    RoutingRuleを指定する場合、この要素を指定する必要があります。

    ルールが一致した後に実行する操作。

    親ノード: RoutingRule

    RedirectTypeString条件付き

    Redirectを指定する場合、このパラメーターを指定する必要があります。

    リダイレクトの種類。 有効な値:
    • ミラーリング: ミラーリングベースのback-to-origin。
    • External: 外部リダイレクト。 OSSは、3xx HTTPリダイレクトコードと、別のIPアドレスにアクセスをリダイレクトするためのLocationヘッダーを返します。
    • AliCDN: Alibaba Cloud Content Delivery Network (CDN) に基づくリダイレクト。 OSSはリクエストに、外部タイプとは異なる追加のヘッダーを追加します。 CDNがヘッダーを識別した後、CDNは指定されたIPアドレスへのアクセスをリダイレクトし、リダイレクトリクエストの代わりに取得したデータをユーザーに返します。

    親ノード: リダイレクト

    PassQueryStringブール値任意システムがリダイレクションルールまたはミラーリングベースのback-to-originルールを実行するときに、リダイレクトリクエストに元のリクエストのパラメーターを含めるかどうかを指定します。

    たとえば、PassQueryStringパラメーターがtrueに設定され、? a=b&c=d OSSに送信されるリクエストにパラメーターが含まれ、PassQueryStringがtrueに設定され、リダイレクションモードが302されている、このパラメーターはLocationヘッダーに追加されます。 たとえば、リクエストがLocatio n:www.example.com?a=b&c=dで、リダイレクションタイプがミラーリングベースのback-to-originの場合、a=b&c=dパラメーターもback-to-originリクエストに含まれます。 デフォルト値:false

    有効な値: trueとfalse

    親ノード: リダイレクト

    MirrorURLString条件付き

    RedirectTypeがMirrorに設定されている場合、この要素を指定する必要があります。

    ミラーリングベースのback-to-originのオリジンURL。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。

    オリジンURLは、http:// またはhttps:// で始まり、スラッシュ (/) で終わる必要があります。 OSSはURLの末尾にオブジェクト名を追加して、back-to-origin URLを生成します。

    たとえば、アクセスするオブジェクトの名前はmyobjectです。 MirrorURLがhttp://www.example.com/ に設定されている場合、back-to-origin URLがhttp://www.example.com/dir1/myobjectされます。 MirrorURLがhttp://www.example.com/dir1/ に設定されている場合、back-to-origin URLがhttp://www.example.com/dir1/myobjectされます。

    親ノード: リダイレクト

    MirrorPassQueryStringブール値任意この要素は PassQueryString と同じ役割がありますが、優先順位は PassQueryString よりも高いです。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。

    デフォルト値:false

    親ノード: リダイレクト

    MirrorFollowRedirectブール値任意オリジンが3xx HTTPステータスコードを返す場合、Locationで指定されたアドレスにアクセスをリダイレクトするかどうかを指定します。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。

    たとえば、ミラーリングベースのback-to-originリクエストが開始されると、オリジンが302を返し、Locationが指定されます。

    • MirrorFollowRedirectをtrueに設定すると、OSSはLocationで指定されたアドレスを引き続きリクエストします。

      アクセスは最大10回までリダイレクトできます。 アクセスが10回以上リダイレクトされると、ミラーリングベースのback-to-originリクエストは失敗します。

    • MirrorFollowRedirectをfalseに設定すると、OSSは302を返し、Locationを通過します。

    デフォルト値:true

    親ノード: リダイレクト

    MirrorCheckMd5ブール値任意オリジンから返されたレスポンスの本体のMD5ハッシュをチェックするかどうかを指定します。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。

    MirrorFollowRedirect値がtrueで、オリジンから返されたレスポンスにContent-Md5ヘッダーが含まれている場合、取得したデータのMD5ハッシュがヘッダー値と一致するかどうかを確認します。 取得したデータのMD5ハッシュがヘッダー値と一致しない場合、OSSはデータを保存しません。

    デフォルト値:false

    親ノード: リダイレクト
    MirrorHeadersContainer任意ミラーリングベースのback-to-originを使用すると返されるレスポンスに含まれるヘッダー。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。

    親ノード: リダイレクト

    PassAllブール値任意すべてのリクエストヘッダーをオリジンに渡すかどうかを指定します。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。 リクエストヘッダーには、次のヘッダーが含まれていません。
    • content-length、authorization2、authorization、range、dateなどのヘッダー
    • oss-、x-oss-、およびx-drs-で始まるヘッダー

    デフォルト値:false

    親ノード: MirrorHeaders

    パスString任意オリジンに渡すヘッダー。The headers to pass through to the origin. この要素は、RedirectType の値が Mirror の場合のみ有効になります。

    各ヘッダーの長さは最大1,024バイトで、英数字、ハイフン (-) のみを使用できます。

    最大10個のPassヘッダーを指定できます。

    親ノード: MirrorHeaders

    削除String任意オリジンへの通過が許可されていないヘッダー。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。

    各ヘッダーの長さは最大1,024バイトです。 このパラメーターの文字セットは、Passの文字セットと同じです。

    最大10個のRemoveヘッダーを指定できます。 このパラメータはPassAllと共に使用されます。

    親ノード: MirrorHeaders

    セットContainer任意オリジンに送信されるヘッダー。 ヘッダーは、ヘッダーがリクエストに含まれているかどうかに関係なく、オリジンから返されるデータに設定されます。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。

    最大10個のSetヘッダーを指定できます。

    親ノード: MirrorHeaders

    キーString条件付き

    この要素は、Setを指定する場合に指定する必要があります。

    ヘッダーのキー。The key of the header. キーの長さは最大1,024バイトです。 このパラメーターの文字セットは、Passの文字セットと同じです。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。

    親ノード: Set

    String条件付き

    この要素は、Setを指定する場合に指定する必要があります。

    ヘッダーの値。 値は最大1,024バイトで、\r\nは使用できません。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。

    親ノード: Set

    プロトコルString任意リダイレクトに使用されるプロトコル。 この要素は、RedirectType の値が External または AliCDN の場合のみ有効になります。

    たとえば、testという名前のオブジェクトにアクセスし、Protocolがhttpsに設定され、Hostnameがwww.example.comに設定されている場合、Locationヘッダーの値はhttps://www.example.com/testになります。

    有効な値: httpおよびhttps

    親ノード: リダイレクト

    ホスト名String任意リダイレクトに使用されるドメイン名。ドメイン名の命名規則に準拠する必要があります。

    たとえば、testという名前のオブジェクトにアクセスし、Protocolがhttpsに設定され、Hostnameがwww.example.comに設定されている場合、Locationヘッダーの値はhttps://www.example.com/testになります。

    親ノード: リダイレクト

    ReplaceKeyPrefixWithString任意リダイレクト中にオブジェクト名のプレフィックスを置き換えるために使用される文字列。 オブジェクトのプレフィックスが空の場合、この文字列はオブジェクト名の前にあります。
    説明 ルールで指定できるのは、ReplaceKeyWithノードとReplaceKeyPrefixWithノードの1つだけです。

    たとえば、アクセスするオブジェクトはabc/test.txtです。 KeyPrefixEqualsをabc /に設定し、ReplaceKeyPrefixWithをdef /に設定すると、Locationヘッダーの値がhttp://www.example.com/def/test.txtになります。

    親ノード: リダイレクト

    EnableReplacePrefixブール値任意この要素がtrueに設定されている場合、オブジェクト名のプレフィックスはReplaceKeyPrefixWithで指定された値に置き換えられます。 このパラメーターが指定されていないか空の場合、オブジェクト名のプレフィックスは切り捨てられます。
    説明 ReplaceKeyWith要素が空でない場合、EnableReplacePrefix要素をtrueに設定することはできません。

    デフォルト値:false

    親ノード: リダイレクト

    ReplaceKeyWithString任意リクエストがリダイレクトされたときに、リクエストされたオブジェクト名を置き換えるために使用される文字列。 この要素は変数に設定できます。 リクエスト内のオブジェクト名を示す ${key} 変数がサポートされています。

    たとえば、アクセスするオブジェクトの名前はtestです。 ReplaceKeyWithがprefix/${key}.suffixに設定されている場合、Locationヘッダーで指定されたアドレスがhttp://www.example.com/prefix/test.suffixされます。

    親ノード: リダイレクト

    HttpRedirectCodeHTTP ステータスコード任意レスポンス内のHTTPリダイレクトコード。 この要素は、RedirectType の値が External または AliCDN の場合のみ有効になります。 デフォルト値: 301

    有効な値: 301、302、307

    親ノード: リダイレクト

レスポンスヘッダー

PutBucket要求に対する応答には、共通の応答ヘッダーのみが含まれます。 詳細については、「共通レスポンスヘッダー」をご参照ください。

  • PUT /? WebサイトHTTP/1.1のサンプルリクエスト
    
    ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com
    コンテンツ-長さ: 209
    日付: 5月4日金曜日2012 03:21:12 GMT
    承認: OSS nxj7dtwhcyl5hp ****:sNKIHT6ci/z231yIT5vYnetD ****
    
    <?xml version="1.0" encoding="UTF-8"?>
    <WebsiteConfiguration>
      <IndexDocument>
        <Suffix>index.html</Suffix>
          <SupportSubDir>true</SupportSubDir>
          <タイプ> 0</タイプ>
      </IndexDocument>
      <ErrorDocument>
        <Key>error.html</Key>
        <HttpStatus>404</HttpStatus>
      </ErrorDocument>
    </WebsiteConfiguration> 
  • HTTP/1.1 200のサンプル応答
    OK
    x-oss-request-id: 534B371674E88A4D8906008B
    日付: 5月4日金曜日2012 03:21:12 GMT
    コンテンツ長: 0
    接続: キープアライブ
    サーバー: AliyunOSS 
  • 完全なサンプルコード
    PUT /? WebサイトHTTP/1.1
    日付: 7月27日金曜日2018: 09:03:18 GMT
    コンテンツ-長さ: 2064
    ホスト: test.oss-cn-hangzhou-internal.aliyuncs.com
    承認: OSS nxj7dtwhcyl5hp ****:sNKIHT6ci/z231yIT5vYnetD ****
    ユーザーエージェント: aliyun-sdk-python-test/0.4.0
    
    <WebsiteConfiguration>
      <IndexDocument>
        <Suffix>index.html</Suffix>
        <SupportSubDir>true</SupportSubDir>
        <タイプ> 0</タイプ>
      </IndexDocument>
      <ErrorDocument>
        <Key>error.html</Key>
        <HttpStatus>404</HttpStatus>
      </ErrorDocument>
      <RoutingRules>
        <RoutingRule>
          <RuleNumber>1</RuleNumber>
          <Condition>
            <KeyPrefixEquals>abc/</KeyPrefixEquals>
            <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
          </Condition>
          <Redirect>
            <RedirectType>Mirror</RedirectType>
            <PassQueryString>true</PassQueryString>
            <MirrorURL>http://www.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>
            <HostNam e>www.example.com</HostName>
            <PassQueryString>false</PassQueryString>
            <ReplaceKeyWith>prefix/${key}.suffix</ReplaceKeyWith>
            <HttpRedirectCode>301</HttpRedirectCode>
          </Redirect>
        </RoutingRule>
        <RoutingRule>
          <Condition>
            <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
          </Condition>
          <RuleNumber>3</RuleNumber>
          <Redirect>
            <ReplaceKeyWith>prefix/${key}</ReplaceKeyWith>
            <HttpRedirectCode>302</HttpRedirectCode>
            <EnableReplacePrefix>false</EnableReplacePrefix>
            <PassQueryString>false</PassQueryString>
            <Protocol>http</Protocol>
            <HostNam e>www.example.com</HostName>
            <RedirectType> 外部 </RedirectType>
          </Redirect>
        </RoutingRule>
      </RoutingRules>
    </WebsiteConfiguration>
    
    HTTP/1.1 200 OK
    サーバー: AliyunOSS
    日付: 7月27日金曜日2018: 09:03:18 GMT
    コンテンツ長: 0
    接続: キープアライブ
    x-oss-request-id: 5B5ADFD6ED3CC49176CBE29D
    x-oss-server-time: 47 

SDK

エラーコード

エラーコードHTTPステータスコード説明
InvalidDigest400OSSによって計算されたメッセージ本文のContent-MD5値が、リクエストヘッダーのContent-MD5値と一致しない場合に返されるエラーメッセージ。