All Products
Search
Document Center

Object Storage Service:PutBucketWebsite

Last Updated:Jun 05, 2026

Operasi PutBucketWebsite mengonfigurasi bucket untuk hosting situs web statis dan menetapkan aturan pengalihan (RoutingRule).

Catatan penggunaan

Situs web statis terdiri dari konten statis, termasuk skrip sisi klien seperti JavaScript. OSS tidak mendukung pemrosesan sisi server seperti PHP, JSP, atau ASP.NET.

  • PutBucketWebsite memerlukan izin oss:PutBucketWebsite. Berikan kebijakan akses kustom kepada RAM user.

  • Fitur

    Mengonfigurasi halaman utama default, halaman 404 default, dan aturan pengalihan (RoutingRule). Aturan pengalihan mendukung redirect 3xx dan Pengembalian ke sumber berbasis mirroring.

  • Akses situs web statis menggunakan nama domain kustom

    Untuk mengakses situs web statis menggunakan nama domain kustom, tambahkan Rekaman CNAME. Ikat nama domain kustom.

  • Halaman indeks dan error

    Anda dapat menentukan halaman indeks dan halaman error. Keduanya harus berupa objek dalam bucket.

  • Akses anonim ke domain root

    Setelah hosting situs web statis dikonfigurasi, OSS mengembalikan halaman indeks untuk permintaan anonim ke domain root. Permintaan bertanda tangan ke domain root mengembalikan hasil operasi GetBucket (ListObjects).

Sintaksis permintaan

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>

Header permintaan

DescribeRegions hanya menggunakan header permintaan umum. Untuk informasi selengkapnya, lihat Header permintaan umum.

Parameter permintaan

  • Isi WebsiteConfiguration

    Name

    Type

    Required

    Description

    WebsiteConfiguration

    Container

    Yes

    Node root.

    Parent node: None

  • Isi Dokumen Indeks

    Name

    Type

    Required

    Description

    IndexDocument

    Container

    Conditional

    Anda harus menentukan setidaknya salah satu container berikut: IndexDocument, ErrorDocument, dan RoutingRules.

    Container untuk halaman utama default.

    Parent node: WebsiteConfiguration

    Suffix

    String

    Conditional

    Parameter ini wajib jika Anda menentukan node induk IndexDocument.

    Halaman utama default.

    OSS mengembalikan halaman ini untuk permintaan ke URL yang diakhiri garis miring (/).

    Parent node: IndexDocument

    SupportSubDir

    String

    No

    Apakah akan mengalihkan permintaan untuk subdirektori ke halaman indeks di subdirektori tersebut. Nilai yang valid:

    • true: Mengalihkan permintaan ke halaman indeks di subdirektori.

    • false (default): Tidak mengalihkan permintaan ke halaman indeks di subdirektori. Sebagai gantinya, permintaan dialihkan ke halaman indeks di direktori root.

    Sebagai contoh, halaman utama default adalah index.html dan permintaan dikirim ke bucket.oss-cn-hangzhou.aliyuncs.com/subdir/. Jika Anda mengatur SupportSubDir ke false, permintaan dialihkan ke bucket.oss-cn-hangzhou.aliyuncs.com/index.html. Jika Anda mengatur SupportSubDir ke true, permintaan dialihkan ke bucket.oss-cn-hangzhou.aliyuncs.com/subdir/index.html.

    Parent node: IndexDocument

    Type

    Enumeration

    No

    Operasi yang dilakukan ketika halaman utama default ditetapkan, nama Object yang diakses tidak diakhiri garis miring (/), dan Object tersebut tidak ada. Operasi ini hanya berlaku ketika SupportSubDir diatur ke true dan diterapkan setelah RoutingRule tetapi sebelum ErrorFile.

    Sebagai contoh, halaman utama default adalah index.html, permintaan dikirim untuk path file bucket.oss-cn-hangzhou.aliyuncs.com/abc, dan objek abc tidak ada. Tindakan untuk nilai berbeda dari Type adalah sebagai berikut:

    • 0 (default): Memeriksa apakah abc/index.html ada. Path-nya dalam format Object + / + Homepage. Jika objek tersebut ada, OSS mengembalikan redirect 302 ke path yang telah di-encode URL /abc/. Path-nya dalam format / + Object + /. Jika objek tidak ada, OSS mengembalikan error 404 lalu memeriksa keberadaan halaman error.

    • 1: Mengembalikan error 404 dengan kode kesalahan NoSuchKey lalu memeriksa keberadaan halaman error.

    • 2: Memeriksa apakah abc/index.html ada. Jika objek tersebut ada, kontennya dikembalikan. Jika objek tidak ada, OSS mengembalikan error 404 lalu memeriksa keberadaan halaman error.

    Parent node: IndexDocument

  • Isi dokumen error

    Name

    Type

    Required

    Description

    ErrorDocument

    Container

    Conditional

    Anda harus menentukan setidaknya salah satu container berikut: IndexDocument, ErrorDocument, dan RoutingRules.

    Container untuk halaman error 404.

    Parent node: WebsiteConfiguration

    Key

    String

    Conditional

    Parameter ini wajib jika Anda menentukan node induk ErrorDocument.

    Halaman error.

    Dikembalikan saat objek yang diminta tidak ada.

    Parent node: ErrorDocument

    HttpStatus

    String

    No

    Kode status HTTP yang dikembalikan bersama halaman error.

    Nilai yang valid: 200, 404 (default)

    Parent node: ErrorDocument

  • RoutingRules|RoutingRule|RuleNumber

    Name

    Type

    Required

    Description

    RoutingRules

    Container

    Conditional

    Anda harus menentukan setidaknya salah satu container berikut: IndexDocument, ErrorDocument, dan RoutingRules.

    Container untuk aturan pengalihan.

    Parent node: WebsiteConfiguration

    RoutingRule

    Container

    No

    Aturan pengalihan atau aturan pengembalian ke sumber berbasis mirroring. Maksimal: 20 aturan.

    Parent node: RoutingRules

    RuleNumber

    Positive integer

    Conditional

    Parameter ini wajib jika Anda menentukan node induk RoutingRule.

    Nomor urutan. OSS mencocokkan aturan secara berurutan naik dan berhenti pada kecocokan pertama.

    Parent node: RoutingRule

  • Isi Condition dalam RoutingRule

    Name

    Type

    Required

    Description

    Condition

    Container

    Conditional

    Parameter ini wajib jika Anda menentukan node induk RoutingRule.

    Kondisi pencocokan.

    Semua kondisi harus terpenuhi agar aturan dieksekusi.

    Parent node: RoutingRule

    KeyPrefixEquals

    String

    No

    Kunci objek harus memiliki awalan ini agar aturan berlaku.

    Parent node: Condition

    HttpErrorCodeReturnedEquals

    HTTP status code

    No

    Kode status HTTP yang dikembalikan untuk objek yang diminta yang memicu aturan ini. Untuk pengembalian ke sumber berbasis mirroring, atur ke 404.

    Parent node: Condition

    IncludeHeader

    Container

    No

    Permintaan harus menyertakan header dan nilainya yang ditentukan agar aturan berlaku. Anda dapat menentukan hingga 10 header.

    Parent node: Condition

    Key

    String

    Yes

    Aturan ini hanya berlaku jika permintaan berisi header yang ditentukan dan nilainya persis sesuai dengan nilai yang ditentukan untuk Equals.

    Parent node: IncludeHeader

    Equals

    String

    No

    Nilai header permintaan. Aturan hanya berlaku jika permintaan menyertakan header yang ditentukan oleh Key dan nilainya sesuai dengan nilai ini.

    Parent node: IncludeHeader

    KeySuffixEquals

    String

    No

    Kunci objek harus memiliki akhiran ini agar aturan berlaku.

    Nilai default kosong, yang berarti tidak ada akhiran yang dicocokkan.

    Parent node: Condition

  • Konfigurasi Redirect

    Name

    Type

    Required

    Description

    Redirect

    Container

    Conditional

    Parameter ini wajib jika Anda menentukan node induk RoutingRule.

    Aksi yang dilakukan saat aturan cocok.

    Parent node: RoutingRule

    RedirectType

    String

    Conditional

    Parameter ini wajib jika Anda menentukan node induk Redirect.

    Tipe redirect. Nilai yang valid:

    • Mirror: pengembalian ke sumber berbasis mirroring.

    • External: redirect eksternal. OSS mengembalikan redirect 3xx ke alamat lain.

    • AliCDN: redirect Alibaba Cloud CDN. Tipe ini digunakan untuk Alibaba Cloud CDN. Berbeda dengan redirect eksternal, OSS menambahkan header tambahan ke permintaan. Setelah Alibaba Cloud CDN mendeteksi header ini, permintaan dialihkan ke alamat yang ditentukan dan data yang diambil dikembalikan ke pengguna, bukan mengembalikan permintaan redirect 3xx ke pengguna.

    Parent node: Redirect

    PassQueryString

    Boolean

    No

    Apakah menyertakan string kueri dari permintaan asli dalam permintaan redirect atau pengembalian ke sumber.

    Sebagai contoh, pengguna mengirim permintaan dengan string kueri ?a=b&c=d. Jika Anda mengatur PassQueryString ke true dan aturan menentukan redirect 302, header Location dalam respons menyertakan string kueri, seperti Location:example.com?a=b&c=d. Jika aturan menentukan pengembalian ke sumber berbasis mirroring, permintaan pengembalian ke sumber juga menyertakan string kueri.

    Nilai yang valid: true, false (default)

    Parent node: Redirect

    MirrorURL

    String

    Conditional

    Parameter ini wajib jika RedirectType diatur ke Mirror.

    Alamat server origin untuk pengembalian ke sumber berbasis mirroring. Hanya berlaku saat RedirectType adalah Mirror.

    Alamat harus diawali dengan http:// atau https:// dan diakhiri garis miring (/). OSS menambahkan nama objek ke alamat ini untuk membuat URL pengembalian ke sumber.

    Sebagai contoh, jika objek yang diminta adalah myobject dan Anda mengatur parameter ini ke http://example.com/, URL pengembalian ke sumber adalah http://example.com/myobject. Jika Anda mengatur parameter ini ke http://example.com/dir1/, URL pengembalian ke sumber adalah http://example.com/dir1/myobject.

    Parent node: Redirect

    MirrorPassQueryString

    Boolean

    No

    Sama seperti PassQueryString tetapi memiliki prioritas lebih tinggi. Hanya berlaku saat RedirectType adalah Mirror.

    Nilai default: false

    Parent node: Redirect

    MirrorFollowRedirect

    Boolean

    No

    Apakah mengikuti redirect 3xx dari server origin. Hanya berlaku saat RedirectType adalah Mirror.

    Sebagai contoh, server origin mengembalikan redirect 302 dengan header Location.

    • Jika Anda mengatur parameter ini ke true, OSS mengirim permintaan baru ke alamat yang ditentukan dalam header Location.

      Maksimal 10 redirect diikuti. Jika jumlah redirect melebihi 10, permintaan pengembalian ke sumber gagal.

    • Jika Anda mengatur parameter ini ke false, OSS mengembalikan redirect 302 dan meneruskan header Location ke client.

    Nilai default: true

    Parent node: Redirect

    MirrorCheckMd5

    Boolean

    No

    Apakah memverifikasi hash MD5 dari badan respons dari server origin. Hanya berlaku saat RedirectType adalah Mirror.

    Saat MirrorCheckMd5 bernilai true dan respons origin menyertakan header Content-Md5, OSS memverifikasi data yang ditarik terhadap nilai header tersebut. Data yang tidak cocok tidak disimpan.

    Nilai default: false

    Parent node: Redirect

    MirrorHeaders

    Container

    No

    Header yang disertakan dalam permintaan pengembalian ke sumber. Hanya berlaku saat RedirectType adalah Mirror.

    Parent node: Redirect

    PassAll

    Boolean

    No

    Apakah meneruskan semua header permintaan ke server origin, kecuali header berikut. Hanya berlaku saat RedirectType adalah Mirror.

    • Header seperti content-length, authorization2, authorization, range, dan date

    • Header yang diawali dengan oss-, x-oss-, atau x-drs-

    Nilai default: false

    Parent node: MirrorHeaders

    Pass

    String

    No

    Header yang ditentukan untuk diteruskan ke server origin. Hanya berlaku saat RedirectType adalah Mirror.

    Panjang setiap header maksimal 1.024 byte dan hanya boleh berisi angka (0-9), huruf (a-z, A-Z), dan tanda hubung (-).

    Anda dapat menentukan hingga 10 header.

    Parent node: MirrorHeaders

    Remove

    String

    No

    Header yang ditentukan untuk dicegah agar tidak diteruskan ke server origin. Hanya berlaku saat RedirectType adalah Mirror.

    Panjang setiap header maksimal 1.024 byte dan menggunakan set karakter yang sama seperti Pass.

    Anda dapat menentukan hingga 10 header. Parameter ini biasanya digunakan bersama PassAll.

    Parent node: MirrorHeaders

    Set

    Container

    No

    Menetapkan header untuk disertakan dalam permintaan pengembalian ke sumber, terlepas dari apakah permintaan asli memuatnya atau tidak. Hanya berlaku saat RedirectType adalah Mirror.

    Anda dapat menetapkan container ini hingga maksimal 10 grup.

    Parent node: MirrorHeaders

    Key

    String

    Conditional

    Parameter ini wajib jika Anda menentukan node induk Set.

    Kunci header yang akan ditetapkan. Panjang kunci maksimal 1.024 byte dan hanya boleh berisi angka (0-9), huruf (a-z, A-Z), dan tanda hubung (-). Hanya berlaku saat RedirectType adalah Mirror.

    Parent node: Set

    Value

    String

    Conditional

    Parameter ini wajib jika Anda menentukan node induk Set.

    Nilai header yang akan ditetapkan. Panjang nilai maksimal 1.024 byte dan tidak boleh berisi \r\n. Hanya berlaku saat RedirectType adalah Mirror.

    Parent node: Set

    Protocol

    String

    No

    Protokol yang digunakan untuk redirect. Hanya berlaku saat RedirectType adalah External atau AliCDN.

    Sebagai contoh, jika objek yang diminta adalah test, Anda menetapkan tujuan redirect ke example.com, dan Anda menetapkan Protocol ke https, header Location adalah https://example.com/test.

    Nilai yang valid: http, https.

    Parent node: Redirect

    HostName

    String

    No

    Nama domain yang digunakan untuk redirect. Nama domain harus valid.

    Sebagai contoh, jika objek yang diminta adalah test, Anda menetapkan Protocol ke https, dan Anda menetapkan HostName ke example.com, header Location adalah https://example.com/test.

    Parent node: Redirect

    ReplaceKeyPrefixWith

    String

    No

    String yang menggantikan awalan kunci objek selama redirect. Jika awalan kosong, string ini disisipkan di awal kunci objek.

    Catatan

    Anda dapat menentukan ReplaceKeyWith atau ReplaceKeyPrefixWith, tetapi tidak keduanya.

    Sebagai contoh, jika objek yang diminta adalah abc/test.txt, Anda menetapkan KeyPrefixEquals ke abc/, dan Anda menetapkan ReplaceKeyPrefixWith ke def/, header Location adalah http://example.com/def/test.txt.

    Parent node: Redirect

    EnableReplacePrefix

    Boolean

    No

    Jika parameter ini diatur ke true, awalan objek diganti dengan nilai ReplaceKeyPrefixWith. Jika parameter ini tidak ditentukan atau kosong, awalan objek dipotong.

    Catatan

    Anda tidak dapat mengatur parameter ini ke true jika parameter ReplaceKeyWith tidak kosong.

    Nilai default: false

    Parent node: Redirect

    ReplaceKeyWith

    String

    No

    Menggantikan seluruh kunci objek selama redirect. Gunakan variabel ${key} untuk mereferensikan kunci objek asli.

    Sebagai contoh, jika objek yang diminta adalah test dan Anda menetapkan ReplaceKeyWith ke prefix/${key}.suffix, header Location adalah http://example.com/prefix/test.suffix.

    Parent node: Redirect

    HttpRedirectCode

    HTTP status code

    No

    Kode status HTTP yang dikembalikan untuk redirect. Hanya berlaku saat RedirectType adalah External atau AliCDN.

    Nilai yang valid: 301 (default), 302, 307.

    Parent node: Redirect

Header respons

Respons hanya berisi header respons umum. Untuk informasi selengkapnya, lihat Header respons umum.

Contoh

  • Contoh permintaan

    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>
  • Contoh respons

    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
  • Contoh lengkap

    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)

Perintah ossutil: put-bucket-website.

Kode kesalahan

Kode kesalahan

Kode status HTTP

Deskripsi

InvalidDigest

400

Nilai header Content-MD5 tidak sesuai dengan hash MD5 yang dihitung OSS untuk badan permintaan.