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

Object Storage Service:PutBucketWebsite

最終更新日:Jun 05, 2026

PutBucketWebsite 操作は、静的 Web サイトホスティング用にバケットを設定し、リダイレクトルール (RoutingRule) を設定します。

注意事項

静的 Web サイトは、JavaScript などのクライアントサイドスクリプトを含む静的コンテンツで構成されます。OSS は、PHP、JSP、ASP.NET などのサーバーサイド処理をサポートしていません。

  • PutBucketWebsite には oss:PutBucketWebsite 権限が必要です。RAM ユーザーにカスタムアクセスポリシーを付与する

  • 機能

    デフォルトホームページ、デフォルト 404 ページ、およびリダイレクトルール (RoutingRule) を設定します。リダイレクトルールは、3xx リダイレクトとミラーリングベースのオリジンフェッチをサポートします。

  • カスタムドメイン名を使用した静的 Web サイトへのアクセス

    カスタムドメイン名を使用して静的 Web サイトにアクセスするには、CNAME レコードを追加してください。詳細については、「カスタムドメイン名をバインドする」をご参照ください。

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

    インデックスページとエラーページを指定できます。どちらもバケット内のオブジェクトである必要があります。

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

    静的 Web サイトホスティングを設定すると、OSS はルートドメインへの匿名リクエストに対してインデックスページを返します。ルートドメインへの署名付きリクエストは、GetBucket (ListObjects) API の結果を返します。

リクエスト構文

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>

リクエストヘッダー

DescribeRegions リクエストのすべてのヘッダーは、共通のリクエストヘッダーです。詳細については、「共通のリクエストヘッダー」をご参照ください。

リクエストパラメーター

  • WebsiteConfiguration の内容

    名前

    タイプ

    必須

    説明

    WebsiteConfiguration

    コンテナ

    はい

    ルートノード。

    親ノード:なし

  • IndexDocument の内容

    名前

    タイプ

    必須

    説明

    IndexDocument

    コンテナ

    条件付き

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

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

    親ノード:WebsiteConfiguration

    Suffix

    文字列

    条件付き

    親ノード IndexDocument を指定する場合、このパラメーターは必須です。

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

    OSS は、フォワードスラッシュ (/) で終わる URL へのリクエストに対してこのページを返します。

    親ノード:IndexDocument

    SupportSubDir

    文字列

    不要

    サブディレクトリへのリクエストを、そのサブディレクトリ内のインデックスページにリダイレクトするかどうかを指定します。有効な値:

    • 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 の前に適用されます。

    例:デフォルトホームページが index.html で、ファイルパス bucket.oss-cn-hangzhou.aliyuncs.com/abc にリクエストを送信し、オブジェクト abc が存在しないとします。Type の値ごとの動作は次のとおりです:

    • 0 (デフォルト):abc/index.html が存在するかどうかを確認します。パスの形式は Object + / + Homepage です。オブジェクトが存在する場合、OSS は URL エンコードされたパス /abc/ への 302 リダイレクトを返します。パスの形式は / + Object + / です。オブジェクトが存在しない場合、OSS は 404 エラーを返し、その後、エラーページの処理に移ります。

    • 1:エラーコード NoSuchKey を含む 404 エラーを返し、その後、エラーページの処理に移ります。

    • 2:abc/index.html が存在するかどうかを確認します。オブジェクトが存在する場合、その内容が返されます。オブジェクトが存在しない場合、OSS は 404 エラーを返し、その後、エラーページの処理に移ります。

    親ノード:IndexDocument

  • ErrorDocument の内容

    名前

    タイプ

    必須

    説明

    ErrorDocument

    コンテナ

    条件付き

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

    404 エラーページのコンテナ。

    親ノード:WebsiteConfiguration

    Key

    文字列

    条件付き

    親ノード ErrorDocument を指定する場合、このパラメーターは必須です。

    エラーページ。

    リクエストされたオブジェクトが存在しない場合に返されます。

    親ノード:ErrorDocument

    HttpStatus

    文字列

    任意

    エラーページと共に返される HTTP ステータスコード。

    有効な値:200、404 (デフォルト)

    親ノード:ErrorDocument

  • RoutingRules|RoutingRule|RuleNumber

    名前

    タイプ

    必須

    説明

    ルーティングルール

    コンテナ

    条件付き

    IndexDocument、ErrorDocument、RoutingRules のいずれか 1 つ以上のコンテナを指定する必要があります。

    リダイレクトルールのコンテナです。

    親ノード: WebsiteConfiguration

    ルーティングルール

    コンテナ

    任意

    リダイレクトルールまたはミラーリングベースのオリジンフェッチルールです。最大 20 個まで設定できます。

    親ノード: RoutingRules

    ルール番号

    正の整数

    条件付き

    親ノード RoutingRule を指定する場合、このパラメーターは必須です。

    シーケンス番号です。OSS はルールを昇順で照合し、最初に一致したルールで停止します。

    親ノード: RoutingRule

  • ルーティングルール の Condition の内容

    Name

    Type

    Required

    Description

    Condition

    コンテナ

    条件付き

    親ノード RoutingRule を指定する場合、このパラメーターは必須です。

    一致条件。

    ルールを実行するには、すべての条件を満たす必要があります。

    親ノード:RoutingRule

    KeyPrefixEquals

    文字列

    No

    オブジェクトキーがこのプレフィックスで始まる場合に、ルールが適用されます。

    親ノード:Condition

    HttpErrorCodeReturnedEquals

    HTTP ステータスコード

    No

    リクエストされたオブジェクトから返され、このルールをトリガーする HTTP ステータスコード。ミラーリングベースのオリジンフェッチの場合は 404 に設定します。

    親ノード:Condition

    IncludeHeader

    コンテナ

    No

    リクエストに指定したヘッダーと値が含まれている場合に、ルールが適用されます。指定できるヘッダーは最大 10 個です。

    親ノード:Condition

    Key

    文字列

    Yes

    このルールは、リクエストに指定したヘッダーが含まれ、その値が Equals に指定した値と完全に一致する場合にのみ適用されます。

    親ノード:IncludeHeader

    Equals

    文字列

    No

    リクエストヘッダーの値。このルールは、リクエストに Key で指定したヘッダーが含まれ、その値がこの値と一致する場合にのみ適用されます。

    親ノード:IncludeHeader

    KeySuffixEquals

    文字列

    No

    オブジェクトキーがこのサフィックスで終わる場合に、ルールが適用されます。

    デフォルト値は空です。これは、どのサフィックスにも一致しないことを意味します。

    親ノード:Condition

  • リダイレクト設定

    名前

    タイプ

    必須

    説明

    Redirect

    コンテナ

    条件付き

    親ノードのルーティングルールを指定する場合、このパラメーターは必須です。

    ルールが一致した場合に実行するアクション。

    親ノード:ルーティングルール

    RedirectType

    文字列

    条件付き

    親ノードの Redirect を指定する場合、このパラメーターは必須です。

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

    • Mirror:ミラーリングベースのオリジンフェッチ。

    • External:外部リダイレクト。OSS は 3xx リダイレクトを別のアドレスに返します。

    • AliCDN:Alibaba Cloud CDN リダイレクト。このタイプは Alibaba Cloud CDN で使用されます。外部リダイレクトとは異なり、OSS はリクエストに特別なヘッダーを追加します。Alibaba Cloud CDN はこのヘッダーを検出すると、ユーザーに 3xx リダイレクトを返す代わりに、リクエストを指定されたアドレスにリダイレクトし、取得したデータをユーザーに返します。

    親ノード:Redirect

    PassQueryString

    Boolean

    いいえ

    元のリクエストのクエリ文字列をリダイレクトまたはオリジンフェッチリクエストに含めるかどうか。

    たとえば、ユーザーがクエリ文字列 ?a=b&c=d でリクエストを送信したとします。PassQueryString を true に設定し、ルールが 302 リダイレクトを指定している場合、レスポンスの Location ヘッダーには、Location:example.com?a=b&c=d のようにクエリ文字列が含まれます。ルールがミラーリングベースのオリジンフェッチを指定している場合、オリジンフェッチリクエストにもクエリ文字列が含まれます。

    有効な値:true、false (デフォルト)

    親ノード:Redirect

    MirrorURL

    文字列

    条件付き

    RedirectType が Mirror に設定されている場合、このパラメーターは必須です。

    ミラーリングベースのオリジンフェッチのオリジンサーバーアドレス。RedirectType が Mirror の場合にのみ有効です。

    アドレスは http:// または https:// で始まり、フォワードスラッシュ (/) で終わる必要があります。OSS はこのアドレスにオブジェクトキーを付加して、オリジンフェッチ URL を作成します。

    たとえば、リクエストされたオブジェクトが myobject で、このパラメーターを http://example.com/ に設定した場合、オリジンフェッチ URL は http://example.com/myobject になります。このパラメーターを http://example.com/dir1/ に設定した場合、オリジンフェッチ URL は http://example.com/dir1/myobject になります。

    親ノード:Redirect

    MirrorPassQueryString

    Boolean

    いいえ

    PassQueryString と同じですが、優先度が高くなります。RedirectType が Mirror の場合にのみ有効です。

    デフォルト値:false

    親ノード:Redirect

    MirrorFollowRedirect

    Boolean

    いいえ

    オリジンサーバーからの 3xx リダイレクトに従うかどうか。RedirectType が Mirror の場合にのみ有効です。

    たとえば、オリジンサーバーが Location ヘッダーを含む 302 リダイレクトを返すとします。

    • このパラメーターを true に設定すると、OSS は Location ヘッダーで指定されたアドレスに新しいリクエストを送信します。

      最大 10 回のリダイレクトに従います。リダイレクトの回数が 10 回を超えると、オリジンフェッチリクエストは失敗します。

    • このパラメーターを false に設定すると、OSS は 302 リダイレクトを返し、Location ヘッダーをクライアントにパススルーします。

    デフォルト値:true

    親ノード:Redirect

    MirrorCheckMd5

    Boolean

    いいえ

    オリジンサーバーからのレスポンスボディの MD5 ハッシュを検証するかどうか。RedirectType が Mirror の場合にのみ有効です。

    MirrorCheckMd5 が true で、オリジンからのレスポンスに Content-Md5 ヘッダーが含まれている場合、OSS は取得したデータをヘッダーの値と照合して検証します。データが一致しない場合は保存されません。

    デフォルト値:false

    親ノード:Redirect

    MirrorHeaders

    コンテナ

    いいえ

    オリジンフェッチリクエストに含めるヘッダー。RedirectType が Mirror の場合にのみ有効です。

    親ノード:Redirect

    PassAll

    Boolean

    いいえ

    以下のヘッダーを除くすべてのリクエストヘッダーをオリジンサーバーにパススルーするかどうか。RedirectType が Mirror の場合にのみ有効です。

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

    • oss-、x-oss-、または x-drs- で始まるヘッダー

    デフォルト値:false

    親ノード:MirrorHeaders

    Pass

    文字列

    いいえ

    オリジンサーバーにパススルーする指定のヘッダー。RedirectType が Mirror の場合にのみ有効です。

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

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

    親ノード:MirrorHeaders

    Remove

    文字列

    いいえ

    オリジンサーバーへのパススルーを禁止する指定のヘッダー。RedirectType が Mirror の場合にのみ有効です。

    各ヘッダーの最大長は 1024 バイトで、Pass と同じ文字セットを使用します。

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

    親ノード:MirrorHeaders

    Set

    コンテナ

    いいえ

    元のリクエストに含まれていたかどうかに関わらず、オリジンフェッチリクエストに含めるヘッダーを設定します。RedirectType が Mirror の場合にのみ有効です。

    このコンテナには、最大 10 グループを設定できます。

    親ノード:MirrorHeaders

    Key

    文字列

    条件付き

    親ノードの Set を指定する場合、このパラメーターは必須です。

    設定するヘッダーのキー。キーの長さは最大 1,024 バイトで、数字 (0-9)、文字 (a-z、A-Z)、ハイフン (-) のみを含めることができます。RedirectType が Mirror の場合にのみ有効です。

    親ノード:Set

    Value

    文字列

    条件付き

    親ノードの Set を指定する場合、このパラメーターは必須です。

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

    親ノード:Set

    Protocol

    文字列

    いいえ

    リダイレクトに使用するプロトコル。RedirectType が External または AliCDN の場合にのみ有効です。

    たとえば、リクエストされたオブジェクトが test で、リダイレクト先を example.com に設定し、Protocol を https に設定した場合、Location ヘッダーは https://example.com/test になります。

    有効な値:httphttps

    親ノード:Redirect

    HostName

    文字列

    いいえ

    リダイレクトに使用するドメイン名。有効なドメイン名である必要があります。

    たとえば、リクエストされたオブジェクトが test で、Protocol を https に設定し、HostName を example.com に設定した場合、Location ヘッダーは https://example.com/test になります。

    親ノード:Redirect

    ReplaceKeyPrefixWith

    文字列

    いいえ

    リダイレクト中にオブジェクトキーのプレフィックスを置き換える文字列。プレフィックスが空の場合、この文字列はオブジェクトキーの先頭に挿入されます。

    説明

    ReplaceKeyWith または ReplaceKeyPrefixWith のいずれかを指定できますが、両方は指定できません。

    たとえば、リクエストされたオブジェクトが abc/test.txt で、KeyPrefixEquals を abc/ に設定し、ReplaceKeyPrefixWith を def/ に設定した場合、Location ヘッダーは http://example.com/def/test.txt になります。

    親ノード:Redirect

    EnableReplacePrefix

    Boolean

    いいえ

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

    説明

    ReplaceKeyWith パラメーターが空でない場合、このパラメーターを 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 (デフォルト)、302、307。

    親ノード:Redirect

レスポンスヘッダー

DescribeRegions リクエストへのレスポンスのすべてのヘッダーは、共通のレスポンスヘッダーです。詳細については、「共通のレスポンスヘッダー」をご参照ください。

  • リクエスト例

    PUT /?website HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Content-Length: 209
    Date: Thu, 17 Apr 2025 03:21:12 GMT
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    
    <?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: Thu, 17 Apr 2025 09:03:18 GMT
    Content-Length: 2064
    Host: test.oss-cn-hangzhou-internal.aliyuncs.com
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    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

SDK

CLI (ossutil)

ossutil コマンド:put-bucket-website

エラーコード

エラーコード

HTTP ステータスコード

説明

InvalidDigest

400

Content-MD5 ヘッダーの値が、OSS がリクエストボディから計算した MD5 ハッシュと一致しません。