PutBucketWebsite işlemi, bir paketi statik web sitesi barındırma için yapılandırır ve yönlendirme kurallarını (RoutingRule) ayarlar.
Kullanım notları
Statik web siteleri; JavaScript gibi istemci tarafı betikleri içeren statik içerikten oluşur. OSS; PHP, JSP veya ASP.NET gibi sunucu tarafı işlemleri desteklemez.
PutBucketWebsite işlemi için
oss:PutBucketWebsiteizni gerekir. RAM kullanıcısına özel erişim ilkesi atama.-
Özellikler
Varsayılan ana sayfa, varsayılan 404 sayfası ve yönlendirme kurallarını (RoutingRule) yapılandırır. Yönlendirme kuralları 3xx yönlendirmelerini ve yansıtma tabanlı kökene geri dönmeyi destekler.
-
Statik web sitelerine özel alan adları kullanarak erişim
Statik bir web sitesine özel alan adı kullanarak erişmek için bir CNAME kaydı ekleyin. Özel alan adı bağlama.
-
Dizin ve hata sayfaları
Bir dizin sayfası ve bir hata sayfası belirtebilirsiniz. Her ikisi de paketteki nesneler olmalıdır.
-
Kök etki alanına anonim erişim
Statik web sitesi barındırma yapılandırıldıktan sonra OSS, kök etki alanına yapılan anonim istekler için dizin sayfasını döndürür. Kök etki alanına imzalı istekler GetBucket (ListObjects) işleminin sonucunu döndürür.
İstek sözdizimi
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>
İstek üstbilgileri
DescribeRegions yalnızca ortak istek üstbilgilerini kullanır. Daha fazla bilgi için bkz. Ortak istek üstbilgileri.
İstek parametreleri
-
WebsiteConfiguration içeriği
Ad
Tür
Gerekli
Açıklama
WebsiteConfiguration
Konteyner
EvetKök düğüm.
Üst düğüm: Yok
-
IndexDocument içeriği
Ad
Tür
Gerekli
Açıklama
IndexDocument
Konteyner
Koşullu
Aşağıdaki konteynerlerden en az birini belirtmeniz gerekir: IndexDocument, ErrorDocument ve RoutingRules.
Varsayılan ana sayfa için konteyner.
Üst düğüm: WebsiteConfiguration
Suffix
Dize
Koşullu
Üst düğüm IndexDocument'i belirtirseniz bu parametre gereklidir.
Varsayılan ana sayfa.
OSS, eğik çizgi (/) ile biten URL'lere yapılan istekler için bu sayfayı döndürür.
Üst düğüm: IndexDocument
SupportSubDir
Dize
Hayır
Bir alt dizin için yapılan isteklerin o alt dizindeki dizin sayfasına yönlendirilip yönlendirilmeyeceği. Geçerli değerler:
-
true: İstekleri alt dizindeki dizin sayfasına yönlendirir.
-
false (varsayılan): İstekleri alt dizindeki dizin sayfasına yönlendirmez. Bunun yerine, istekler kök dizindeki dizin sayfasına yönlendirilir.
Örneğin, varsayılan ana sayfa index.html'dir ve
bucket.oss-cn-hangzhou.aliyuncs.com/subdir/adresine bir istek gönderilir. SupportSubDir değerini false olarak ayarlarsanız istekbucket.oss-cn-hangzhou.aliyuncs.com/index.htmladresine yönlendirilir. SupportSubDir değerini true olarak ayarlarsanız istekbucket.oss-cn-hangzhou.aliyuncs.com/subdir/index.htmladresine yönlendirilir.Üst düğüm: IndexDocument
Type
Sabit listesi
Hayır
Varsayılan ana sayfa ayarlandığında, erişilen nesnenin adı eğik çizgi (/) ile bitmediğinde ve nesne mevcut olmadığında gerçekleştirilecek işlem. Bu işlem yalnızca SupportSubDir true olarak ayarlandığında etkin olur ve RoutingRule'dan sonra, ErrorFile'dan önce uygulanır.
Örneğin, varsayılan ana sayfa index.html'dir,
bucket.oss-cn-hangzhou.aliyuncs.com/abcdosya yolu için bir istek gönderilir ve abc nesnesi mevcut değildir. Type için farklı değerlere ilişkin eylemler aşağıdaki gibidir:-
0 (varsayılan): abc/index.html'in var olup olmadığını kontrol eder. Yol
Nesne + / + Ana Sayfabiçimindedir. Nesne mevcutsa OSS, URL kodlu/abc/yoluna 302 yönlendirmesi döndürür. Yol/ + Nesne + /biçimindedir. Nesne mevcut değilse OSS 404 hatası döndürür ve ardından bir hata sayfası arar. -
1: NoSuchKey hata koduyla 404 hatası döndürür ve ardından bir hata sayfası arar.
-
2: abc/index.html'in var olup olmadığını kontrol eder. Nesne mevcutsa içeriği döndürülür. Nesne mevcut değilse OSS 404 hatası döndürür ve ardından bir hata sayfası arar.
Üst düğüm: IndexDocument
-
-
Hata belgesi içeriği
Ad
Tür
Gerekli
Açıklama
ErrorDocument
Konteyner
Koşullu
Aşağıdaki konteynerlerden en az birini belirtmeniz gerekir: IndexDocument, ErrorDocument ve RoutingRules.
404 hata sayfası için konteyner.
Üst düğüm: WebsiteConfiguration
Key
Dize
Koşullu
Üst düğüm ErrorDocument'i belirtirseniz bu parametre gereklidir.
Hata sayfası.
İstenen nesne mevcut olmadığında döndürülür.
Üst düğüm: ErrorDocument
HttpStatus
Dize
Hayır
Hata sayfasıyla birlikte döndürülecek HTTP durum kodu.
Geçerli değerler: 200, 404 (varsayılan)
Üst düğüm: ErrorDocument
-
RoutingRules|RoutingRule|RuleNumber
Ad
Tür
Gerekli
Açıklama
RoutingRules
KonteynerKoşullu
Aşağıdaki konteynerlerden en az birini belirtmeniz gerekir: IndexDocument, ErrorDocument ve RoutingRules.
Yönlendirme kuralları için konteyner.
Üst düğüm: WebsiteConfiguration
RoutingRule
Konteyner
HayırBir yönlendirme kuralı veya yansıtma tabanlı kökene geri dönme kuralı. Maksimum: 20 kural.
Üst düğüm: RoutingRules
RuleNumber
Pozitif tamsayıKoşullu
Üst düğüm RoutingRule'u belirtirseniz bu parametre gereklidir.
Sıra numarası. OSS, kuralları artan sırada eşleştirir ve ilk eşleşmede durur.
Üst düğüm: RoutingRule
-
RoutingRule içindeki Condition içeriği
Ad
Tür
Gerekli
Açıklama
Condition
Konteyner
Koşullu
Üst düğüm RoutingRule'u belirtirseniz bu parametre gereklidir.
Eşleşme koşulları.
Kuralın yürütülmesi için tüm koşulların karşılanması gerekir.
Üst düğüm: RoutingRule
KeyPrefixEquals
Dize
Hayır
Kuralın uygulanması için nesne anahtarının bu öneke sahip olması gerekir.
Üst düğüm: Condition
HttpErrorCodeReturnedEquals
HTTP durum kodu
Hayır
Bu kuralı tetikleyen istenen nesne için döndürülen HTTP durum kodu. Yansıtma tabanlı kökene geri dönme için 404 olarak ayarlayın.
Üst düğüm: Condition
IncludeHeader
Konteyner
Hayır
Kuralın uygulanması için istek belirtilen üstbilgiyi ve değeri içermelidir. En fazla 10 üstbilgi belirtebilirsiniz.
Üst düğüm: Condition
Key
Dize
Evet
Bu kural yalnızca istek belirtilen üstbilgiyi içeriyorsa ve değeri Equals için belirtilen değerle tam olarak eşleşiyorsa uygulanır.
Üst düğüm: IncludeHeader
Equals
Dize
Hayır
İstek üstbilgisinin değeri. Kural yalnızca istek Key tarafından belirtilen üstbilgiyi içeriyorsa ve değeri bu değerle eşleşiyorsa uygulanır.
Üst düğüm: IncludeHeader
KeySuffixEquals
Dize
Hayır
Kuralın uygulanması için nesne anahtarının bu soneke sahip olması gerekir.
Varsayılan değer boştur, bu da hiçbir sonekin eşleşmediği anlamına gelir.
Üst düğüm: Condition
-
Yönlendirme yapılandırması
Ad
Tür
Gerekli
Açıklama
Redirect
Konteyner
Koşullu
Üst düğüm RoutingRule'u belirtirseniz bu parametre gereklidir.
Kural eşleştiğinde gerçekleştirilecek eylem.
Üst düğüm: RoutingRule
RedirectType
Dize
Koşullu
Üst düğüm Redirect'i belirtirseniz bu parametre gereklidir.
Yönlendirme türü. Geçerli değerler:
-
Mirror: yansıtma tabanlı kökene geri dönme.
-
External: harici yönlendirme. OSS başka bir adrese 3xx yönlendirmesi döndürür.
-
AliCDN: Alibaba Cloud CDN yönlendirmesi. Bu tür Alibaba Cloud CDN için kullanılır. Harici yönlendirmeden farklı olarak OSS isteğe ek bir üstbilgi ekler. Alibaba Cloud CDN bu üstbilgiyi algıladıktan sonra isteği belirtilen adrese yönlendirir ve alınan verileri kullanıcıya döndürür; kullanıcıya 3xx yönlendirme isteği döndürmez.
Üst düğüm: Redirect
PassQueryString
Boolean
Hayır
Orijinal istekteki sorgu dizesinin yönlendirme veya kökene geri dönme isteğine dahil edilip edilmeyeceği.
Örneğin, bir kullanıcı
?a=b&c=dsorgu dizesiyle bir istek gönderir. PassQueryString değerini true olarak ayarlarsanız ve kural bir 302 yönlendirmesi belirtirse yanıtın Location üstbilgisiLocation:example.com?a=b&c=dgibi sorgu dizesini içerir. Kural yansıtma tabanlı kökene geri dönmeyi belirtiyorsa kökene geri dönme isteği de sorgu dizesini içerir.Geçerli değerler: true, false (varsayılan)
Üst düğüm: Redirect
MirrorURL
Dize
Koşullu
RedirectType Mirror olarak ayarlandıysa bu parametre gereklidir.
Yansıtma tabanlı kökene geri dönme için kaynak sunucu adresi. Yalnızca RedirectType Mirror olduğunda etkili olur.
Adres http:// veya https:// ile başlamalı ve eğik çizgi (/) ile bitmelidir. OSS, kökene geri dönme URL'sini oluşturmak için nesne adını bu adrese ekler.
Örneğin, istenen nesne myobject ise ve bu parametreyi
http://example.com/olarak ayarlarsanız kökene geri dönme URL'sihttp://example.com/myobjectolur. Bu parametreyihttp://example.com/dir1/olarak ayarlarsanız kökene geri dönme URL'sihttp://example.com/dir1/myobjectolur.Üst düğüm: Redirect
MirrorPassQueryString
Boolean
Hayır
PassQueryString ile aynıdır ancak daha yüksek önceliğe sahiptir. Yalnızca RedirectType Mirror olduğunda etkili olur.
Varsayılan değer: false
Üst düğüm: Redirect
MirrorFollowRedirect
Boolean
Hayır
Kaynak sunucudan gelen 3xx yönlendirmelerinin takip edilip edilmeyeceği. Yalnızca RedirectType Mirror olduğunda etkili olur.
Örneğin, kaynak sunucu bir Location üstbilgisiyle 302 yönlendirmesi döndürür.
-
Bu parametreyi true olarak ayarlarsanız OSS, Location üstbilgisinde belirtilen adrese yeni bir istek gönderir.
En fazla 10 yönlendirme takip edilir. Yönlendirme sayısı 10'u aşarsa kökene geri dönme isteği başarısız olur.
-
Bu parametreyi false olarak ayarlarsanız OSS 302 yönlendirmesini döndürür ve Location üstbilgisini istemciye iletir.
Varsayılan değer: true
Üst düğüm: Redirect
MirrorCheckMd5
Boolean
Hayır
Kaynak sunucudan gelen yanıt gövdesinin MD5 hash değerinin doğrulanıp doğrulanmayacağı. Yalnızca RedirectType Mirror olduğunda etkili olur.
MirrorCheckMd5 true olduğunda ve kaynak yanıtı bir Content-Md5 üstbilgisi içeriyorsa OSS, çekilen verileri üstbilgi değerine göre doğrular. Eşleşmeyen veriler kaydedilmez.
Varsayılan değer: false
Üst düğüm: Redirect
MirrorHeaders
Konteyner
Hayır
Kökene geri dönme isteğine dahil edilecek üstbilgiler. Yalnızca RedirectType Mirror olduğunda etkili olur.
Üst düğüm: Redirect
PassAll
Boolean
Hayır
Aşağıdaki üstbilgiler hariç tüm istek üstbilgilerinin kaynak sunucuya geçirilip geçirilmeyeceği. Yalnızca RedirectType Mirror olduğunda etkili olur.
-
content-length, authorization2, authorization, range ve date gibi üstbilgiler
-
oss-, x-oss- veya x-drs- ile başlayan üstbilgiler
Varsayılan değer: false
Üst düğüm: MirrorHeaders
Pass
Dize
Hayır
Kaynak sunucuya geçirilecek belirtilen üstbilgiler. Yalnızca RedirectType Mirror olduğunda etkili olur.
Her üstbilginin uzunluğu en fazla 1024 bayt olabilir ve yalnızca rakamlar (0-9), harfler (a-z, A-Z) ve tire (-) içerebilir.
En fazla 10 üstbilgi belirtebilirsiniz.
Üst düğüm: MirrorHeaders
Remove
Dize
Hayır
Kaynak sunucuya geçirilmesi yasaklanan belirtilen üstbilgiler. Yalnızca RedirectType Mirror olduğunda etkili olur.
Her üstbilginin maksimum uzunluğu 1024 bayttır ve Pass ile aynı karakter kümesini kullanır.
En fazla 10 üstbilgi belirtebilirsiniz. Bu parametre genellikle PassAll ile birlikte kullanılır.
Üst düğüm: MirrorHeaders
Set
Konteyner
Hayır
Orijinal isteğin onu içerip içermediğinden bağımsız olarak kökene geri dönme isteğine dahil edilecek bir üstbilgi ayarlar. Yalnızca RedirectType Mirror olduğunda etkili olur.
Bu konteyneri en fazla 10 gruba atayabilirsiniz.
Üst düğüm: MirrorHeaders
Key
Dize
Koşullu
Üst düğüm Set'i belirtirseniz bu parametre gereklidir.
Ayarlanacak üstbilginin anahtarı. Anahtarın uzunluğu en fazla 1024 bayt olabilir ve yalnızca rakamlar (0-9), harfler (a-z, A-Z) ve tire (-) içerebilir. Yalnızca RedirectType Mirror olduğunda etkili olur.
Üst düğüm: Set
Value
Dize
Koşullu
Üst düğüm Set'i belirtirseniz bu parametre gereklidir.
Ayarlanacak üstbilginin değeri. Değerin uzunluğu en fazla 1024 bayt olabilir ve
\r\niçeremez. Yalnızca RedirectType Mirror olduğunda etkili olur.Üst düğüm: Set
Protocol
Dize
Hayır
Yönlendirme için kullanılacak protokol. Yalnızca RedirectType External veya AliCDN olduğunda etkili olur.
Örneğin, istenen nesne test ise, yönlendirme hedefini
example.comolarak ayarlarsınız ve Protocol değerini https olarak ayarlarsanız Location üstbilgisihttps://example.com/testolur.Geçerli değerler: http, https.
Üst düğüm: Redirect
HostName
Dize
Hayır
Yönlendirme için kullanılacak alan adı. Alan adı geçerli olmalıdır.
Örneğin, istenen nesne test ise, Protocol değerini https olarak ayarlarsınız ve HostName değerini
example.comolarak ayarlarsanız Location üstbilgisihttps://example.com/testolur.Üst düğüm: Redirect
ReplaceKeyPrefixWith
Dize
Hayır
Yönlendirme sırasında nesne anahtarı önekini değiştirmek için kullanılan dize. Önek boşsa bu dize nesne anahtarının başına eklenir.
NotReplaceKeyWith veya ReplaceKeyPrefixWith belirtebilirsiniz ancak ikisini birden belirtemezsiniz.
Örneğin, istenen nesne abc/test.txt ise, KeyPrefixEquals değerini abc/ olarak ayarlarsınız ve ReplaceKeyPrefixWith değerini def/ olarak ayarlarsanız Location üstbilgisi
http://example.com/def/test.txtolur.Üst düğüm: Redirect
EnableReplacePrefix
Boolean
Hayır
Bu parametre true olarak ayarlanırsa nesne öneki ReplaceKeyPrefixWith değeri ile değiştirilir. Bu parametre belirtilmezse veya boşsa nesne öneki kısaltılır.
NotReplaceKeyWith parametresi boş değilse bu parametreyi true olarak ayarlayamazsınız.
Varsayılan değer: false
Üst düğüm: Redirect
ReplaceKeyWith
Dize
Hayır
Yönlendirme sırasında tüm nesne anahtarını değiştirir. Orijinal nesne anahtarına başvurmak için ${key} değişkenini kullanın.
Örneğin, istenen nesne test ise ve ReplaceKeyWith değerini
prefix/${key}.suffixolarak ayarlarsanız Location üstbilgisihttp://example.com/prefix/test.suffixolur.Üst düğüm: Redirect
HttpRedirectCode
HTTP durum kodu
Hayır
Yönlendirme için döndürülecek HTTP durum kodu. Yalnızca RedirectType External veya AliCDN olduğunda etkili olur.
Geçerli değerler: 301 (varsayılan), 302, 307.
Üst düğüm: Redirect
-
Yanıt üstbilgileri
Yanıt yalnızca ortak yanıt üstbilgilerini içerir. Daha fazla bilgi için bkz. Ortak yanıt üstbilgileri.
Örnekler
-
İstek örneği
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> -
Yanıt örneği
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 -
Tam örnek
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 komutu: put-bucket-website.
Hata kodları
|
|
|
|
|
|
|
|