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

Object Storage Service:PutBucketWebsite

最終更新日:Feb 28, 2025

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

アップロード制限

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

  • oss:PutBucketWebsite 権限は、PutBucketWebsite を呼び出すことによって、静的 Web サイトホスティングモードを有効にし、リダイレクトルールを設定するために必要です。詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。

  • 機能

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

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

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

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

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

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

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

リクエスト構造

PUT /?website HTTP/1.1
Date: GMT Date
Content-Length: ContentLength
Content-Type: application/xml
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Authorization: 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>

リクエストヘッダー

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

リクエストパラメーター

  • 次の表に、WebsiteConfiguration の要素を示します。

    要素

    タイプ

    必須

    説明

    WebsiteConfiguration

    コンテナー

    はい

    ルートノード。

    親ノード: なし

  • 次の表に、IndexDocument の要素を示します。

    要素

    タイプ

    必須

    説明

    IndexDocument

    コンテナー

    条件付き

    IndexDocument、ErrorDocument、RoutingRules のコンテナーのうち、少なくとも 1 つを指定する必要があります。

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

    親ノード: WebsiteConfiguration

    Suffix

    文字列

    条件付き

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

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

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

    親ノード: IndexDocument

    SupportSubDir

    文字列

    いいえ

    サブディレクトリにアクセスしたときに、サブディレクトリのデフォルトホームページへのアクセスをリダイレクトするかどうかを指定します。デフォルト値: 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

    Type

    列挙型

    いいえ

    デフォルトホームページが設定されていて、アクセスされるオブジェクトの名前がスラッシュ (/) で終わっておらず、オブジェクトが存在しない場合に実行される操作。このパラメーターは、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 の要素を示します。

    要素

    タイプ

    必須

    説明

    ErrorDocument

    コンテナー

    条件付き

    IndexDocument、ErrorDocument、RoutingRules のコンテナーのうち、少なくとも 1 つを指定する必要があります。

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

    親ノード: WebsiteConfiguration

    Key

    文字列

    条件付き

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

    エラーページ。

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

    親ノード: ErrorDocument

    HttpStatus

    文字列

    いいえ

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

    有効値: 200 および 404

    親ノード: ErrorDocument

  • 次の表に、RoutingRules、RoutingRule、および RuleNumber の要素を示します。

    要素

    タイプ

    必須

    説明

    RoutingRules

    コンテナー

    条件付き

    IndexDocument、ErrorDocument、RoutingRules のコンテナーのうち、少なくとも 1 つを指定する必要があります。

    RoutingRule を格納するために使用されるコンテナー。

    親ノード: WebsiteConfiguration

    RoutingRule

    コンテナー

    いいえ

    リダイレクトルールまたはミラーリングベースの原点復帰ルール。最大 20 個のルールを指定できます。

    親ノード: RoutingRules

    RuleNumber

    正の整数

    条件付き

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

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

    親ノード: RoutingRule

  • 次の表に、RoutingRules、RoutingRule、および Condition の要素を示します。

    要素

    タイプ

    必須

    説明

    Condition

    コンテナー

    条件付き

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

    一致条件。

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

    親ノード: RoutingRule

    KeyPrefixEquals

    文字列

    いいえ

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

    親ノード: Condition

    HttpErrorCodeReturnedEquals

    HTTP ステータスコード

    いいえ

    HTTP ステータスコード。指定されたオブジェクトにアクセスし、指定された HTTP ステータスコードが返された場合にのみ、ルールに一致します。リダイレクトルールがミラーリングベースの原点復帰ルールの場合、この要素の値は 404 です。

    親ノード: Condition

    IncludeHeader

    コンテナー

    いいえ

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

    親ノード: Condition

    Key

    文字列

    はい

    ヘッダーのキー。指定されたヘッダーがリクエストに含まれており、ヘッダー値が Equals で指定された値と等しい場合にのみ、ルールに一致します。

    親ノード: IncludeHeader

    Equals

    文字列

    いいえ

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

    親ノード: IncludeHeader

    KeySuffixEquals

    文字列

    いいえ

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

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

    親ノード: Condition

  • 次の表に、RoutingRules、RoutingRule、および Redirect の要素を示します。

    要素

    タイプ

    必須

    説明

    Redirect

    コンテナー

    条件付き

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

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

    親ノード: RoutingRule

    RedirectType

    文字列

    条件付き

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

    リダイレクトタイプ。有効値:

    • ミラー: ミラーリングベースの原点復帰。

    • 外部: 外部リダイレクト。OSS は 3xx HTTP リダイレクト コードと Location ヘッダーを返し、別の IP アドレスへのアクセスをリダイレクトします。

    • AliCDN: Alibaba Cloud Content Delivery Network ( CDN ) に基づくリダイレクト。OSS はリクエストに追加のヘッダーを追加します。これは External タイプとは異なります。CDN がヘッダーを識別した後、CDN はアクセスを指定された IP アドレスにリダイレクトし、リダイレクトリクエストの代わりに取得したデータをユーザーに返します。

    親ノード: リダイレクト

    PassQueryString

    ブール値

    いいえ

    システムがリダイレクトルールまたはミラーリングベースの原点復帰ルールを実行するときに、リダイレクトリクエストに元の リクエスト のパラメーターを含めるかどうかを指定します。

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

    有効な値: true および false

    親ノード: Redirect

    MirrorURL

    String

    Conditional

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

    ミラーリングベースの原点復帰のソース URL。この要素は、RedirectType の値が Mirror の場合にのみ有効になります。

    ソース URL は http:// または https:// で始まり、スラッシュ (/) で終わる必要があります。OSS は URL の末尾にオブジェクト名を追加して、原点復帰 URL を生成します。

    たとえば、アクセスするオブジェクトの名前が myobject であるとします。MirrorURL が http://example.com/ に設定されている場合、原点復帰 URL は http://example.com/myobject になります。MirrorURL が http://example.com/dir1/ に設定されている場合、原点復帰 URL は http://example.com/dir1/myobject になります。

    親ノード: Redirect

    MirrorPassQueryString

    ブール値

    いいえ

    この要素は、PassQueryString と同じ役割を果たし、PassQueryString よりも優先順位が高くなります。この要素は、RedirectType の値が Mirror の場合にのみ有効になります。

    既定値: false

    親ノード: Redirect

    MirrorFollowRedirect

    ブール値

    いいえ

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

    たとえば、ミラーリングベースの原点復帰リクエストが開始されたときに、オリジンが 302 を返し、Location が指定されているとします。

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

      アクセスは最大 10 回リダイレクトできます。アクセスが 10 回を超えてリダイレクトされた場合、ミラーリングベースの原点復帰リクエストは失敗します。

    • MirrorFollowRedirect を false に設定すると、OSS は 302 を返し、Location をパススルーします。

    デフォルト値: true

    親ノード: Redirect

    MirrorCheckMd5

    ブール値

    いいえ

    オリジンから返されたレスポンス本文の MD5 ハッシュを確認するかどうかを指定します。この要素は、RedirectType の値が Mirror の場合にのみ有効になります。

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

    デフォルト値: false

    親ノード: Redirect

    MirrorHeaders

    コンテナ

    いいえ

    ミラーリングベースの原点復帰を使用した場合に戻される応答に含まれるヘッダー。この要素は、RedirectType の値が Mirror の場合にのみ有効になります。

    親ノード: Redirect

    PassAll

    ブール値

    いいえ

    オリジンへのすべてのリクエストヘッダーをパススルーするかどうかを指定します。この要素は、RedirectType の値が Mirror の場合にのみ有効になります。リクエストヘッダーには、次のヘッダーは含まれません。

    • content-length、authorization2、authorization、range、date などのヘッダー

    • oss-、x-oss-、および x-drs- で始まるヘッダー

    デフォルト値: false

    親ノード: MirrorHeaders

    パス

    文字列

    いいえ

    オリジンにパススルーするヘッダー。この要素は、RedirectType の値が Mirror の場合にのみ有効になります。

    各ヘッダーは最大 1,024 バイトの長さで、文字、数字、およびハイフン (-) のみを含めることができます。

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

    親ノード: MirrorHeaders

    削除

    文字列

    いいえ

    オリジンへのパススルーが許可されていないヘッダー。この要素は、RedirectType の値が Mirror の場合にのみ有効になります。

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

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

    親ノード: MirrorHeaders

    設定

    コンテナ

    いいえ

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

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

    親ノード: MirrorHeaders

    キー

    文字列

    条件付き

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

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

    親ノード: Set

    文字列

    条件付き

    この要素は、「Set」が指定されている場合に指定する必要があります。

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

    親ノード: Set

    プロトコル

    String

    いいえ

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

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

    有効な値: http および https

    親ノード: Redirect

    ホスト名

    文字列

    いいえ

    リダイレクトに使用されるドメイン名。ドメイン名の命名規則に準拠している必要があります。

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

    親ノード: リダイレクト

    ReplaceKeyPrefixWith

    文字列

    いいえ

    リダイレクト中にオブジェクト名のプレフィックスを置き換えるために使用される文字列です。オブジェクトのプレフィックスが空の場合、この文字列はオブジェクト名の前に付加されます。

    説明

    1 つのルール内で指定できる ReplaceKeyWith ノードと ReplaceKeyPrefixWith ノードは、いずれか 1 つのみです。

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

    親ノード: Redirect

    EnableReplacePrefix

    ブール値

    いいえ

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

    説明

    ReplaceKeyWith 要素が Empty でない場合、EnableReplacePrefix 要素を true に設定することはできません。

    既定値: false

    親ノード: Redirect

    ReplaceKeyWith

    文字列

    いいえ

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

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

    親ノード: Redirect

    HTTPRedirectCode

    HTTP ステータスコード

    いいえ

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

    有効な値:301、302、および 307

    親ノード:Redirect

レスポンスヘッダー

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

  • リクエストの例

    PUT /?website HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Content-Length: 209
    Date: Fri, 04 May 2012 03:21:12 GMT
    Authorization: OSS qn6q**************:77Dv****************
    
    <?xml version="1.0" encoding="UTF-8"?>
    <WebsiteConfiguration>
      <IndexDocument>
        <Suffix>index.html</Suffix>
          <SupportSubDir>true</SupportSubDir>
          <Type>0</Type>
      </IndexDocument>
      <ErrorDocument>
        <Key>error.html</Key>
        <HttpStatus>404</HttpStatus>
      </ErrorDocument>
    </WebsiteConfiguration>
  • レスポンスの例

    HTTP/1.1 200 OK
    x-oss-request-id: 534B371674E88A4D8906008B
    Date: Fri, 04 May 2012 03:21:12 GMT
    Content-Length: 0
    Connection: keep-alive
    Server: AliyunOSS
  • 完全なサンプルコード

    PUT /?website HTTP/1.1
    Date: Fri, 27 Jul 2018 09:03:18 GMT
    Content-Length: 2064
    Host: test.oss-cn-hangzhou-internal.aliyuncs.com
    Authorization: OSS qn6q**************:77Dv****************
    User-Agent: aliyun-sdk-python-test/0.4.0
    
    <WebsiteConfiguration>
      <IndexDocument>
        <Suffix>index.html</Suffix>
        <SupportSubDir>true</SupportSubDir>
        <Type>0</Type>
      </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://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>
        <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>
            <HostName>example.com</HostName>
            <RedirectType>External</RedirectType>
          </Redirect>
        </RoutingRule>
      </RoutingRules>
    </WebsiteConfiguration>
    
    HTTP/1.1 200 OK
    Server: AliyunOSS
    Date: Fri, 27 Jul 2018 09:03:18 GMT
    Content-Length: 0
    Connection: keep-alive
    x-oss-request-id: 5B5ADFD6ED3CC49176CBE29D
    x-oss-server-time: 47

OSS SDK

ossutil

PutBucketWebsite 操作に対応する ossutil コマンドの詳細については、「put-bucket-website」をご参照ください。

エラーコード

エラーコード

エラーコード

HTTP ステータスコード

InvalidDigest

400

OSS によって計算されたメッセージ本文の Content-MD5 値が、リクエストヘッダーの Content-MD5 値と一致しないために返されるエラーメッセージです。