Menetapkan bucket ke mode hosting situs web statis dan mengonfigurasi aturan pengalihan.
Batasan unggah
Situs web statis terdiri dari halaman web dengan konten statis, termasuk skrip seperti kode JavaScript yang berjalan di sisi klien. Jika Anda ingin menentukan objek Object Storage Service (OSS) sebagai halaman statis, halaman tersebut tidak boleh berisi konten yang memerlukan pemrosesan server, seperti PHP, JSP, atau ASP.NET.
Izin
oss:PutBucketWebsitediperlukan untuk mengaktifkan mode hosting situs web statis dan mengonfigurasi aturan pengalihan dengan memanggil PutBucketWebsite. Untuk informasi lebih lanjut, lihat Lampirkan kebijakan kustom ke pengguna RAM.Fitur
Operasi PutBucketWebsite digunakan untuk mengonfigurasi beranda default, halaman 404 default, dan RoutingRule dari bucket yang disetel ke mode hosting situs web statis. RoutingRule digunakan untuk menentukan aturan pengalihan dan aturan Pengembalian ke sumber berbasis mirroring. Pengembalian ke sumber berbasis mirroring mendukung Alibaba Cloud public cloud dan Finance Cloud.
Akses menggunakan nama domain kustom
Untuk menggunakan nama domain kustom untuk mengakses situs web statis berbasis bucket, Anda dapat menggunakan CNAME. Untuk informasi lebih lanjut tentang operasi spesifik, lihat Peta nama domain kustom.
Halaman indeks dan halaman kesalahan
Ketika Anda menetapkan bucket ke mode hosting situs web statis, Anda dapat menentukan halaman indeks dan halaman kesalahan dari situs web statis. Halaman indeks dan halaman kesalahan yang ditentukan harus berupa objek dalam bucket.
Akses anonim ke domain root
Setelah bucket disetel ke mode hosting situs web statis, OSS mengembalikan halaman indeks untuk akses anonim ke domain root situs web statis. Jika permintaan bertanda dikirim untuk mengakses domain root situs web statis, OSS mengembalikan hasil operasi GetBucket (ListObjects).
Struktur 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
Permintaan PutBucketWebsite hanya berisi header permintaan umum. Untuk informasi lebih lanjut, lihat Header permintaan umum.
Parameter permintaan
Tabel berikut menjelaskan elemen untuk WebsiteConfiguration.
Elemen
Tipe
Diperlukan
Deskripsi
WebsiteConfiguration
Container
Ya
Node akar.
Node induk: tidak ada
Tabel berikut menjelaskan elemen untuk IndexDocument.
Elemen
Tipe
Diperlukan
Deskripsi
IndexDocument
Container
Kondisional
Anda harus menentukan setidaknya satu dari container berikut: IndexDocument, ErrorDocument, dan RoutingRules.
Container untuk beranda default.
Node induk: WebsiteConfiguration
Suffix
String
Kondisional
Elemen ini harus ditentukan jika IndexDocument ditentukan.
Beranda default.
Setelah beranda default ditentukan, OSS mengembalikan beranda default jika objek yang namanya diakhiri dengan garis miring (/) diakses.
Node induk: IndexDocument
SupportSubDir
String
Tidak
Menentukan apakah akan mengarahkan ulang akses ke beranda default di subdirektori ketika subdirektori diakses. Nilai default: false. Nilai valid:
true: Akses dialihkan ke beranda default subdirektori.
false: Akses dialihkan ke beranda default direktori root alih-alih subdirektori.
Contoh: Beranda default diatur ke index.html, dan
bucket.oss-cn-hangzhou.aliyuncs.com/subdir/akan diakses. Jika SupportSubDir diatur ke false, akses dialihkan kebucket.oss-cn-hangzhou.aliyuncs.com/index.html. Jika SupportSubDir diatur ke true, akses dialihkan kebucket.oss-cn-hangzhou.aliyuncs.com/subdir/index.html.Node induk: IndexDocument
Type
Enumerasi
Tidak
Operasi yang dilakukan ketika beranda default diatur, nama objek yang diakses tidak diakhiri dengan garis miring (/), dan objek tersebut tidak ada. Parameter ini hanya berlaku ketika SupportSubDir diatur ke true. Ini berlaku setelah RoutingRule tetapi sebelum ErrorFile.
Jika beranda default untuk akses ke
bucket.oss-cn-hangzhou.aliyuncs.com/abcdiatur ke index.html dan objek abc tidak ada, nilai valid dari Type sesuai dengan operasi berikut. Nilai default Type adalah 0.0: OSS memeriksa apakah objek bernama abc/index.html, yang dalam format
Object + Garis miring (/) + Beranda, ada. Jika objek ada, OSS mengembalikan 302 dan nilai header Location yang berisi URL-encoded/abc/. URL-encoded /abc/ dalam formatGaris miring (/) + Object + Garis miring (/). Jika objek tidak ada, OSS mengembalikan 404 dan melanjutkan untuk memeriksa ErrorFile.1: OSS mengembalikan 404 dan NoSuchKey dan melanjutkan untuk memeriksa ErrorFile.
2: OSS memeriksa apakah abc/index.html ada. Jika abc/index.html ada, konten objek tersebut dikembalikan. Jika abc/index.html tidak ada, OSS mengembalikan 404 dan melanjutkan untuk memeriksa ErrorFile.
Node induk: IndexDocument
Tabel berikut menjelaskan elemen untuk ErrorDocument.
Elemen
Tipe
Diperlukan
Deskripsi
ErrorDocument
Container
Kondisional
Anda harus menentukan setidaknya satu dari container berikut: IndexDocument, ErrorDocument, dan RoutingRules.
Container yang digunakan untuk menyimpan halaman 404 default.
Node induk: WebsiteConfiguration
Key
String
Kondisional
Elemen ini harus ditentukan jika ErrorDocument ditentukan.
Halaman kesalahan.
Setelah halaman kesalahan ditentukan, halaman kesalahan dikembalikan jika objek yang akan diakses tidak ada.
Node induk: ErrorDocument
HttpStatus
String
Tidak
Kode status HTTP yang dikembalikan bersama dengan halaman kesalahan. Nilai default: 404.
Nilai valid: 200 dan 404
Node induk: ErrorDocument
Tabel berikut menjelaskan elemen untuk RoutingRules, RoutingRule, dan RuleNumber.
Elemen
Tipe
Diperlukan
Deskripsi
RoutingRules
Container
Kondisional
Anda harus menentukan setidaknya satu dari container berikut: IndexDocument, ErrorDocument, dan RoutingRules.
Container yang digunakan untuk menyimpan RoutingRule.
Node induk: WebsiteConfiguration
RoutingRule
Container
Tidak
Aturan pengalihan atau aturan Pengembalian ke sumber berbasis mirroring. Anda dapat menentukan maksimal 20 aturan.
Node induk: RoutingRules
RuleNumber
Bilangan bulat positif
Kondisional
Elemen ini harus ditentukan jika RoutingRule ditentukan.
Nomor urutan yang digunakan untuk mencocokkan dan menjalankan aturan pengalihan. Aturan pengalihan dicocokkan berdasarkan elemen ini. Jika pencocokan berhasil, hanya aturan tersebut yang dijalankan dan aturan berikutnya tidak dijalankan.
Node induk: RoutingRule
Tabel berikut menjelaskan elemen untuk RoutingRules, RoutingRule, dan Condition.
Elemen
Tipe
Diperlukan
Deskripsi
Condition
Container
Kondisional
Elemen ini harus ditentukan jika RoutingRule ditentukan.
Kondisi pencocokan.
Jika semua kondisi yang ditentukan terpenuhi, aturan dijalankan. Aturan dianggap cocok hanya ketika aturan memenuhi kondisi yang ditentukan oleh semua node dalam Condition.
Node induk: RoutingRule
KeyPrefixEquals
String
Tidak
Awalan nama objek. Hanya objek yang namanya berisi awalan yang ditentukan yang cocok dengan aturan.
Node induk: Condition
HttpErrorCodeReturnedEquals
Kode status HTTP
Tidak
Kode status HTTP. Aturan cocok hanya ketika objek yang ditentukan diakses dan kode status HTTP yang ditentukan dikembalikan. Jika aturan pengalihan adalah aturan Pengembalian ke sumber berbasis mirroring, nilai elemen ini adalah 404.
Node induk: Condition
IncludeHeader
Container
Tidak
Header yang ditentukan dalam permintaan. Aturan cocok hanya ketika header yang ditentukan termasuk dalam permintaan dan nilai headernya sama dengan nilai yang ditentukan. Anda dapat menentukan hingga 10 container IncludeHeader.
Node induk: Condition
Key
String
Ya
Kunci header. Aturan cocok hanya ketika header yang ditentukan termasuk dalam permintaan dan nilai headernya sama dengan nilai yang ditentukan oleh Equals.
Node induk: IncludeHeader
Equals
String
Tidak
Nilai header. Aturan cocok hanya ketika header yang ditentukan oleh Key termasuk dalam permintaan dan nilai headernya sama dengan nilai yang ditentukan.
Node induk: IncludeHeader
KeySuffixEquals
String
Tidak
Akhiran nama objek. Hanya objek yang namanya berisi akhiran yang ditentukan yang cocok dengan aturan.
Nilai default kosong, yang menunjukkan bahwa tidak ada akhiran yang ditentukan.
Node induk: Condition
Tabel berikut menjelaskan elemen untuk RoutingRules, RoutingRule, dan Redirect.
Elemen
Tipe
Diperlukan
Deskripsi
Redirect
Container
Kondisional
Elemen ini harus ditentukan jika RoutingRule ditentukan.
Operasi yang dilakukan setelah aturan cocok.
Node induk: RoutingRule
RedirectType
String
Kondisional
Parameter ini harus ditentukan jika Redirect ditentukan.
Jenis pengalihan. Nilai valid:
Mirror: Pengembalian ke sumber berbasis mirroring.
External: Pengalihan eksternal. OSS mengembalikan kode redirect HTTP 3xx dan header Lokasi untuk Anda mengarahkan ulang akses ke alamat IP lain.
AliCDN: Pengalihan berdasarkan Alibaba Cloud Content Delivery Network (CDN). OSS menambahkan header tambahan ke permintaan, yang berbeda dari tipe Eksternal. Setelah CDN mengidentifikasi header, CDN mengarahkan ulang akses ke alamat IP yang ditentukan dan mengembalikan data yang diperoleh alih-alih permintaan pengalihan ke pengguna.
Node induk: Redirect
PassQueryString
Boolean
Tidak
Menentukan apakah akan menyertakan parameter dari permintaan asli dalam permintaan pengalihan ketika sistem menjalankan aturan pengalihan atau aturan Pengembalian ke sumber berbasis mirroring.
Sebagai contoh, jika parameter PassQueryString diatur ke true dan parameter
?a=b&c=ddisertakan dalam permintaan yang dikirim ke OSS, PassQueryString diatur ke true, dan mode pengalihan adalah 302, parameter ini ditambahkan ke header Lokasi. Sebagai contoh, jika permintaannya adalahLocation:example.com?a=b&c=ddan tipe pengalihan adalah Pengembalian ke sumber berbasis mirroring, parameter ?a=b&c=d juga disertakan dalam permintaan pengembalian ke sumber. Nilai default: falseNilai valid: true dan false
Node induk: Redirect
MirrorURL
String
Kondisional
Elemen ini harus ditentukan jika RedirectType diatur ke Mirror.
URL asal untuk Pengembalian ke sumber berbasis mirroring. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror.
URL asal harus dimulai dengan http:// atau https:// dan diakhiri dengan garis miring (/). OSS menambahkan nama objek ke akhir URL untuk menghasilkan URL pengembalian ke sumber.
Sebagai contoh, nama objek yang akan diakses adalah myobject. Jika MirrorURL diatur ke
http://example.com/, URL pengembalian ke sumbernya adalahhttp://example.com/myobject. Jika MirrorURL diatur kehttp://example.com/dir1/, URL pengembalian ke sumbernya adalahhttp://example.com/dir1/myobject.Node induk: Redirect
MirrorPassQueryString
Boolean
Tidak
Elemen ini memainkan peran yang sama dengan PassQueryString dan memiliki prioritas lebih tinggi daripada PassQueryString. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror.
Nilai default: false
Node induk: Redirect
MirrorFollowRedirect
Boolean
Tidak
Menentukan apakah akan mengarahkan ulang akses ke alamat yang ditentukan oleh Lokasi jika asal mengembalikan kode status HTTP 3xx. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror.
Sebagai contoh, ketika permintaan Pengembalian ke sumber berbasis mirroring dilakukan, asal mengembalikan 302 dan Lokasi ditentukan.
Jika Anda mengatur MirrorFollowRedirect ke true, OSS melanjutkan untuk meminta alamat yang ditentukan oleh Lokasi.
Akses dapat dialihkan hingga 10 kali. Jika akses dialihkan lebih dari 10 kali, permintaan Pengembalian ke sumber berbasis mirroring gagal.
Jika Anda mengatur MirrorFollowRedirect ke false, OSS mengembalikan 302 dan meneruskan Lokasi.
Nilai default: true
Node induk: Redirect
MirrorCheckMd5
Boolean
Tidak
Menentukan apakah akan memeriksa hash MD5 dari body respons yang dikembalikan oleh asal. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror.
Ketika nilai MirrorFollowRedirect adalah true dan respons yang dikembalikan oleh asal mencakup header Content-Md5, OSS memeriksa apakah hash MD5 dari data yang diperoleh cocok dengan nilai header. Jika hash MD5 dari data yang diperoleh tidak cocok dengan nilai header, OSS tidak menyimpan data tersebut.
Nilai default: false
Node induk: Redirect
MirrorHeaders
Container
Tidak
Header yang terkandung dalam respons yang dikembalikan ketika Anda menggunakan Pengembalian ke sumber berbasis mirroring. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror.
Node induk: Redirect
PassAll
Boolean
Tidak
Menentukan apakah akan meneruskan semua header permintaan ke asal. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror. Header permintaan tidak termasuk header berikut:
Header seperti content-length, authorization2, authorization, range, dan date
Header yang dimulai dengan oss-, x-oss-, dan x-drs-
Nilai default: false
Node induk: MirrorHeaders
Pass
String
Tidak
Header yang akan diteruskan ke asal. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror.
Setiap header dapat memiliki panjang hingga 1.024 byte dan hanya dapat berisi huruf, angka, dan tanda hubung (-).
Anda dapat menentukan hingga 10 header Pass.
Node induk: MirrorHeaders
Remove
String
Tidak
Header yang tidak diizinkan untuk diteruskan ke asal. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror.
Setiap header dapat memiliki panjang hingga 1.024 byte. Set karakter parameter ini sama dengan Pass.
Anda dapat menentukan hingga 10 header Remove. Parameter ini digunakan bersama dengan PassAll.
Node induk: MirrorHeaders
Set
Container
Tidak
Header yang dikirim ke asal. Header dikonfigurasi dalam data yang dikembalikan oleh asal tanpa memperhatikan apakah header tersebut termasuk dalam permintaan. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror.
Anda dapat menentukan hingga 10 header Set.
Node induk: MirrorHeaders
Key
String
Kondisional
Elemen ini harus ditentukan jika Set ditentukan.
Kunci header. Kunci dapat memiliki panjang hingga 1.024 byte. Set karakter parameter ini sama dengan Pass. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror.
Node induk: Set
Value
String
Kondisional
Elemen ini harus ditentukan jika Set ditentukan.
Nilai header. Nilai dapat memiliki panjang hingga 1.024 byte dan tidak boleh berisi
\r\n. Elemen ini hanya berlaku ketika nilai RedirectType adalah Mirror.Node induk: Set
Protocol
String
Tidak
Protokol yang digunakan untuk pengalihan. Elemen ini hanya berlaku ketika nilai RedirectType adalah External atau AliCDN.
Sebagai contoh, jika Anda mengakses objek bernama test, Protocol diatur ke https, dan Hostname diatur ke
example.com, nilai header Lokasi adalahhttps://example.com/test.Nilai valid: http dan https.
Node induk: Redirect
HostName
String
Tidak
Nama domain yang digunakan untuk pengalihan, yang harus mematuhi konvensi penamaan untuk nama domain.
Sebagai contoh, jika Anda mengakses objek bernama test, Protocol diatur ke https, dan Hostname diatur ke
example.com, nilai header Lokasi adalahhttps://example.com/test.Node induk: Redirect
ReplaceKeyPrefixWith
String
Tidak
String yang digunakan untuk mengganti awalan nama objek selama pengalihan. Jika awalan objek kosong, string ini mendahului nama objek.
CatatanAnda hanya dapat menentukan salah satu node ReplaceKeyWith dan ReplaceKeyPrefixWith dalam sebuah aturan.
Sebagai contoh, objek yang akan diakses adalah abc/test.txt. Jika Anda mengatur KeyPrefixEquals ke abc/ dan ReplaceKeyPrefixWith ke def/, nilai header Lokasi adalah
http://example.com/def/test.txt.Node induk: Redirect
EnableReplacePrefix
Boolean
Tidak
Jika elemen ini diatur ke true, awalan nama objek diganti dengan nilai yang ditentukan oleh ReplaceKeyPrefixWith. Jika parameter ini tidak ditentukan atau kosong, awalan nama objek dipotong.
CatatanKetika elemen ReplaceKeyWith tidak kosong, elemen EnableReplacePrefix tidak dapat diatur ke true.
Nilai default: false
Node induk: Redirect
ReplaceKeyWith
String
Tidak
String yang digunakan untuk mengganti nama objek yang diminta ketika permintaan dialihkan. Elemen ini dapat diatur ke variabel. Variabel ${key} yang menunjukkan nama objek dalam permintaan didukung.
Sebagai contoh, nama objek yang akan diakses adalah test. Jika ReplaceKeyWith diatur ke
prefix/${key}.suffix, alamat yang ditentukan oleh header Lokasi adalahhttp://example.com/prefix/test.suffix.Node induk: Redirect
HttpRedirectCode
Kode status HTTP
Tidak
Kode redirect HTTP dalam respons. Elemen ini hanya berlaku ketika nilai RedirectType adalah External atau AliCDN. Nilai default: 301.
Nilai valid: 301, 302, dan 307
Node induk: Redirect
Header respons
Respons terhadap permintaan PutBucketWebsite hanya berisi header respons umum. Untuk informasi lebih lanjut, lihat Header respons umum.
Contoh
Contoh permintaan
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>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: AliyunOSSContoh kode lengkap
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
SDK OSS
ossutil
Untuk informasi tentang perintah ossutil yang sesuai dengan operasi PutBucketWebsite, lihat put-bucket-website.
Kode kesalahan
Kode kesalahan | Kode status HTTP | Deskripsi |
InvalidDigest | 400 | Pesan kesalahan yang dikembalikan karena nilai Content-MD5 dari badan pesan yang dihitung oleh OSS tidak konsisten dengan nilai Content-MD5 dalam header permintaan. |