バケットを静的Webサイトホスティングモードに設定し、リダイレクションルールを設定します。
アップロードの制限
静的webサイトは、クライアントで実行されるJavaScriptコードなどのスクリプトを含む、すべてのwebページが静的コンテンツのみで構成されるwebサイトです。 静的ページとしてObject Storage Service (OSS) オブジェクトを指定する場合、静的ページには、PHP、JSP、ASP.NETコンテンツなど、サーバーで処理する必要のあるコンテンツを含めることはできません。
- 特徴
PutBucketWebsite操作は、静的Webサイトホスティングモードに設定されているバケットのデフォルトのホームページ、デフォルトの404ページ、およびRoutingRuleを設定するために使用されます。 RoutingRuleは、リダイレクションルールとミラーリングベースのback-to-originルールを指定するために使用されます。 ミラーリングベースのback-to-originは、Alibaba CloudパブリッククラウドとFinance cloudをサポートしています。
- カスタムドメイン名を使用したアクセス
カスタムドメイン名を使用してバケットベースの静的Webサイトにアクセスするには、CNAMEを使用できます。 特定の操作の詳細については、「カスタムドメイン名のマップ」をご参照ください。
- インデックスページとエラーページ
バケットを静的Webサイトホスティングモードに設定すると、静的Webサイトのインデックスページとエラーページを指定できます。 指定されたインデックスページとエラーページは、バケット内のオブジェクトである必要があります。
- ルートドメイン名への匿名アクセス
バケットが静的Webサイトホスティングモードに設定されると、静的Webサイトのルートドメイン名への匿名アクセスのインデックスページが返されます。 静的Webサイトのルートドメイン名にアクセスするための署名付きリクエストが送信された場合、OSSはGetBucket (ListObjects) 操作の結果を返します。
リクエストの構造
PUT /? ウェブサイトHTTP/1.1
日付: GMT日付
Content-Length: ContentLength
Content-Type: application/xml
ホスト: BucketName.oss-cn-hangzhou.aliyuncs.com
権限付与: 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>
リクエストヘッダー
PutBucketLifecycleリクエストには、共通のリクエストヘッダーのみが含まれます。 詳細については、「共通リクエストヘッダー」をご参照ください。
リクエストパラメーター
- 次の表では、WebsiteConfigurationの要素について説明します。
要素 データ型 必須 説明 WebsiteConfiguration Container 必須 ルートノード。 親ノード: なし
- 次の表に、IndexDocumentの要素を示します。
要素 データ型 必須 説明 IndexDocument Container 条件付き IndexDocument、ErrorDocument、RoutingRules のうち、1 つ以上のコンテナーを指定する必要があります。
デフォルトのホームページのコンテナ。 親ノード: WebsiteConfiguration
接尾辞 String 条件付き IndexDocumentを指定する場合、この要素を指定する必要があります。
デフォルトのホームページ。 デフォルトのホームページを指定した後、名前がスラッシュ (/) で終わるオブジェクトにアクセスすると、OSSはデフォルトのホームページを返します。
親ノード: IndexDocument
SupportSubDir String 任意 サブディレクトリにアクセスしたときに、サブディレクトリ内のデフォルトのホームページにアクセスをリダイレクトするかどうかを指定します。 デフォルト値: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
データ型 列挙 任意 デフォルトのホームページが設定されていて、アクセスされたオブジェクトの名前がスラッシュ (/) で終わっておらず、オブジェクトが存在しない場合に実行する操作。 このパラメーターは、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 Container 条件付き IndexDocument、ErrorDocument、RoutingRules のうち、1 つ以上のコンテナーを指定する必要があります。
デフォルトの404ページを格納するために使用されるコンテナー。 親ノード: WebsiteConfiguration
キー String 条件付き ErrorDocumentを指定する場合、この要素を指定する必要があります。
エラーページ。 エラーページを指定した後、アクセスするオブジェクトが存在しない場合、エラーページが返されます。
親ノード: ErrorDocument
HttpStatus String 任意 エラーページとともに返されるHTTPステータスコード。 デフォルト値: 404 有効な値: 200と404
親ノード: ErrorDocument
- 次の表では、RoutingRules、RoutingRule、およびRuleNumberの要素について説明します。
要素 データ型 必須 説明 RoutingRules Container 条件付き IndexDocument、ErrorDocument、RoutingRules のうち、1 つ以上のコンテナーを指定する必要があります。
RoutingRuleの格納に使用されるコンテナー。 親ノード: WebsiteConfiguration
RoutingRule Container 任意 リダイレクションルールまたはミラーリングベースのback-to-originルール。 最大20個のルールを指定できます。 親ノード: RoutingRules
RuleNumber 正の整数 条件付き RoutingRuleを指定する場合、この要素を指定する必要があります。
リダイレクションルールの照合と実行に使用されるシーケンス番号。 リダイレクトルールは、この要素に基づいて照合されます。 一致が成功した場合、ルールのみが実行され、後続のルールは実行されません。 親ノード: RoutingRule
- 次の表では、RoutingRules、RoutingRule、およびConditionの要素について説明します。
要素 データ型 必須 説明 条件 Container 条件付き RoutingRuleを指定する場合、この要素を指定する必要があります。
マッチング条件。 指定されたすべての条件が満たされると、ルールが実行されます。 ルールは、ルールがConditionのすべてのノードによって指定された条件を満たす場合にのみ一致したと見なされます。
親ノード: RoutingRule
KeyPrefixEquals String 任意 オブジェクト名のプレフィックス。 指定されたプレフィックスを含む名前のオブジェクトのみがルールに一致します。 親ノード: 条件
HttpErrorCodeReturnedEquals HTTP ステータスコード 任意 HTTP ステータスコード ルールは、指定されたオブジェクトにアクセスし、指定されたHTTPステータスコードが返された場合にのみ一致します。 リダイレクションルールがミラーリングベースのback-to-originルールの場合、この要素の値は404です。 親ノード: 条件
IncludeHeader Container 任意 リクエストで指定されたヘッダー。 ルールは、指定されたヘッダーがリクエストに含まれ、ヘッダー値が指定された値に等しい場合にのみ一致します。 最大10個のIncludeHeaderコンテナを指定できます。 親ノード: 条件
キー String 必須 ヘッダーのキー。The key of the header. 指定されたヘッダーがリクエストに含まれ、ヘッダー値がequalsで指定された値に等しい場合にのみ、ルールが一致します。 親ノード: IncludeHeader
等しい String 任意 ヘッダーの値。 Keyで指定されたヘッダーがリクエストに含まれ、ヘッダー値が指定された値に等しい場合にのみ、ルールが一致します。 親ノード: IncludeHeader
KeySuffixEquals String 任意 オブジェクト名のサフィックス。 指定されたサフィックスを含む名前のオブジェクトのみがルールに一致します。 デフォルト値は空です。これは、サフィックスが指定されていないことを示します。
親ノード: 条件
- 次の表に、RoutingRules、RoutingRule、およびRedirectの要素を示します。
要素 データ型 必須 説明 リダイレクト Container 条件付き RoutingRuleを指定する場合、この要素を指定する必要があります。
ルールが一致した後に実行する操作。 親ノード: RoutingRule
RedirectType String 条件付き Redirectを指定する場合、このパラメーターを指定する必要があります。
リダイレクトの種類。 有効な値: - ミラーリング: ミラーリングベースのback-to-origin。
- External: 外部リダイレクト。 OSSは、3xx HTTPリダイレクトコードと、別のIPアドレスにアクセスをリダイレクトするためのLocationヘッダーを返します。
- AliCDN: Alibaba Cloud Content Delivery Network (CDN) に基づくリダイレクト。 OSSはリクエストに、外部タイプとは異なる追加のヘッダーを追加します。 CDNがヘッダーを識別した後、CDNは指定されたIPアドレスへのアクセスをリダイレクトし、リダイレクトリクエストの代わりに取得したデータをユーザーに返します。
親ノード: リダイレクト
PassQueryString ブール値 任意 システムがリダイレクションルールまたはミラーリングベースのback-to-originルールを実行するときに、リダイレクトリクエストに元のリクエストのパラメーターを含めるかどうかを指定します。 たとえば、PassQueryStringパラメーターがtrueに設定され、
? a=b&c=d OSSに送信されるリクエストに
パラメーターが含まれ、PassQueryStringがtrueに設定され、リダイレクションモードが302されている、このパラメーターはLocationヘッダーに追加されます。 たとえば、リクエストがLocatio n:www.example.com?a=b&c=d
で、リダイレクションタイプがミラーリングベースのback-to-originの場合、a=b&c=dパラメーターもback-to-originリクエストに含まれます。 デフォルト値:false有効な値: trueとfalse
親ノード: リダイレクト
MirrorURL String 条件付き RedirectTypeがMirrorに設定されている場合、この要素を指定する必要があります。
ミラーリングベースのback-to-originのオリジンURL。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。 オリジンURLは、http:// またはhttps:// で始まり、スラッシュ (/) で終わる必要があります。 OSSはURLの末尾にオブジェクト名を追加して、back-to-origin URLを生成します。
たとえば、アクセスするオブジェクトの名前はmyobjectです。 MirrorURLが
http://www.example.com/
に設定されている場合、back-to-origin URLがhttp://www.example.com/dir1/myobject
されます。 MirrorURLがhttp://www.example.com/dir1/
に設定されている場合、back-to-origin URLがhttp://www.example.com/dir1/myobject
されます。親ノード: リダイレクト
MirrorPassQueryString ブール値 任意 この要素は PassQueryString と同じ役割がありますが、優先順位は PassQueryString よりも高いです。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。 デフォルト値:false
親ノード: リダイレクト
MirrorFollowRedirect ブール値 任意 オリジンが3xx HTTPステータスコードを返す場合、Locationで指定されたアドレスにアクセスをリダイレクトするかどうかを指定します。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。 たとえば、ミラーリングベースのback-to-originリクエストが開始されると、オリジンが302を返し、Locationが指定されます。
- MirrorFollowRedirectをtrueに設定すると、OSSはLocationで指定されたアドレスを引き続きリクエストします。
アクセスは最大10回までリダイレクトできます。 アクセスが10回以上リダイレクトされると、ミラーリングベースのback-to-originリクエストは失敗します。
- MirrorFollowRedirectをfalseに設定すると、OSSは302を返し、Locationを通過します。
デフォルト値:true
親ノード: リダイレクト
MirrorCheckMd5 ブール値 任意 オリジンから返されたレスポンスの本体のMD5ハッシュをチェックするかどうかを指定します。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。 MirrorFollowRedirect値がtrueで、オリジンから返されたレスポンスにContent-Md5ヘッダーが含まれている場合、取得したデータのMD5ハッシュがヘッダー値と一致するかどうかを確認します。 取得したデータのMD5ハッシュがヘッダー値と一致しない場合、OSSはデータを保存しません。
デフォルト値:false
親ノード: リダイレクトMirrorHeaders Container 任意 ミラーリングベースのback-to-originを使用すると返されるレスポンスに含まれるヘッダー。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。 親ノード: リダイレクト
PassAll ブール値 任意 すべてのリクエストヘッダーをオリジンに渡すかどうかを指定します。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。 リクエストヘッダーには、次のヘッダーが含まれていません。 - content-length、authorization2、authorization、range、dateなどのヘッダー
- oss-、x-oss-、およびx-drs-で始まるヘッダー
デフォルト値:false
親ノード: MirrorHeaders
パス String 任意 オリジンに渡すヘッダー。The headers to pass through to the origin. この要素は、RedirectType の値が Mirror の場合のみ有効になります。 各ヘッダーの長さは最大1,024バイトで、英数字、ハイフン (-) のみを使用できます。
最大10個のPassヘッダーを指定できます。
親ノード: MirrorHeaders
削除 String 任意 オリジンへの通過が許可されていないヘッダー。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。 各ヘッダーの長さは最大1,024バイトです。 このパラメーターの文字セットは、Passの文字セットと同じです。
最大10個のRemoveヘッダーを指定できます。 このパラメータはPassAllと共に使用されます。
親ノード: MirrorHeaders
セット Container 任意 オリジンに送信されるヘッダー。 ヘッダーは、ヘッダーがリクエストに含まれているかどうかに関係なく、オリジンから返されるデータに設定されます。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。 最大10個のSetヘッダーを指定できます。
親ノード: MirrorHeaders
キー String 条件付き この要素は、Setを指定する場合に指定する必要があります。
ヘッダーのキー。The key of the header. キーの長さは最大1,024バイトです。 このパラメーターの文字セットは、Passの文字セットと同じです。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。 親ノード: Set
値 String 条件付き この要素は、Setを指定する場合に指定する必要があります。
ヘッダーの値。 値は最大1,024バイトで、 \r\n
は使用できません。 この要素は、RedirectType の値が Mirror の場合のみ有効になります。親ノード: Set
プロトコル String 任意 リダイレクトに使用されるプロトコル。 この要素は、RedirectType の値が External または AliCDN の場合のみ有効になります。 たとえば、testという名前のオブジェクトにアクセスし、Protocolがhttpsに設定され、Hostnameが
www.example.com
に設定されている場合、Locationヘッダーの値はhttps://www.example.com/test
になります。有効な値: httpおよびhttps。
親ノード: リダイレクト
ホスト名 String 任意 リダイレクトに使用されるドメイン名。ドメイン名の命名規則に準拠する必要があります。 たとえば、testという名前のオブジェクトにアクセスし、Protocolがhttpsに設定され、Hostnameが
www.example.com
に設定されている場合、Locationヘッダーの値はhttps://www.example.com/test
になります。親ノード: リダイレクト
ReplaceKeyPrefixWith String 任意 リダイレクト中にオブジェクト名のプレフィックスを置き換えるために使用される文字列。 オブジェクトのプレフィックスが空の場合、この文字列はオブジェクト名の前にあります。 説明 ルールで指定できるのは、ReplaceKeyWithノードとReplaceKeyPrefixWithノードの1つだけです。たとえば、アクセスするオブジェクトはabc/test.txtです。 KeyPrefixEqualsをabc /に設定し、ReplaceKeyPrefixWithをdef /に設定すると、Locationヘッダーの値が
http://www.example.com/def/test.txt
になります。親ノード: リダイレクト
EnableReplacePrefix ブール値 任意 この要素がtrueに設定されている場合、オブジェクト名のプレフィックスはReplaceKeyPrefixWithで指定された値に置き換えられます。 このパラメーターが指定されていないか空の場合、オブジェクト名のプレフィックスは切り捨てられます。 説明 ReplaceKeyWith要素が空でない場合、EnableReplacePrefix要素をtrueに設定することはできません。デフォルト値:false
親ノード: リダイレクト
ReplaceKeyWith String 任意 リクエストがリダイレクトされたときに、リクエストされたオブジェクト名を置き換えるために使用される文字列。 この要素は変数に設定できます。 リクエスト内のオブジェクト名を示す ${key} 変数がサポートされています。 たとえば、アクセスするオブジェクトの名前はtestです。 ReplaceKeyWithが
prefix/${key}.suffix
に設定されている場合、Locationヘッダーで指定されたアドレスがhttp://www.example.com/prefix/test.suffix
されます。親ノード: リダイレクト
HttpRedirectCode HTTP ステータスコード 任意 レスポンス内のHTTPリダイレクトコード。 この要素は、RedirectType の値が External または AliCDN の場合のみ有効になります。 デフォルト値: 301 有効な値: 301、302、307
親ノード: リダイレクト
レスポンスヘッダー
PutBucket要求に対する応答には、共通の応答ヘッダーのみが含まれます。 詳細については、「共通レスポンスヘッダー」をご参照ください。
例
- PUT /? WebサイトHTTP/1.1のサンプルリクエスト
ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com コンテンツ-長さ: 209 日付: 5月4日金曜日2012 03:21:12 GMT 承認: OSS nxj7dtwhcyl5hp ****:sNKIHT6ci/z231yIT5vYnetD **** <?xml version="1.0" encoding="UTF-8"?> <WebsiteConfiguration> <IndexDocument> <Suffix>index.html</Suffix> <SupportSubDir>true</SupportSubDir> <タイプ> 0</タイプ> </IndexDocument> <ErrorDocument> <Key>error.html</Key> <HttpStatus>404</HttpStatus> </ErrorDocument> </WebsiteConfiguration>
- HTTP/1.1 200のサンプル応答
OK x-oss-request-id: 534B371674E88A4D8906008B 日付: 5月4日金曜日2012 03:21:12 GMT コンテンツ長: 0 接続: キープアライブ サーバー: AliyunOSS
- 完全なサンプルコード
PUT /? WebサイトHTTP/1.1 日付: 7月27日金曜日2018: 09:03:18 GMT コンテンツ-長さ: 2064 ホスト: test.oss-cn-hangzhou-internal.aliyuncs.com 承認: OSS nxj7dtwhcyl5hp ****:sNKIHT6ci/z231yIT5vYnetD **** ユーザーエージェント: aliyun-sdk-python-test/0.4.0 <WebsiteConfiguration> <IndexDocument> <Suffix>index.html</Suffix> <SupportSubDir>true</SupportSubDir> <タイプ> 0</タイプ> </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://www.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> <HostNam e>www.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> <HostNam e>www.example.com</HostName> <RedirectType> 外部 </RedirectType> </Redirect> </RoutingRule> </RoutingRules> </WebsiteConfiguration> HTTP/1.1 200 OK サーバー: AliyunOSS 日付: 7月27日金曜日2018: 09:03:18 GMT コンテンツ長: 0 接続: キープアライブ x-oss-request-id: 5B5ADFD6ED3CC49176CBE29D x-oss-server-time: 47
SDK
エラーコード
エラーコード | HTTPステータスコード | 説明 |
InvalidDigest | 400 | OSSによって計算されたメッセージ本文のContent-MD5値が、リクエストヘッダーのContent-MD5値と一致しない場合に返されるエラーメッセージ。 |