バケットに対して静的 Web サイトホスティングを有効にし、リダイレクトルールを設定します。
前提条件
権限: 既定では、Alibaba Cloud アカウント (root ユーザー) は
oss:PutBucketWebsite権限を持ちます。RAM ユーザーまたはセキュリティトークンサービス (STS) ユーザーとしてこのコマンドを実行するには、oss:PutBucketWebsite権限を付与する必要があります。詳細については、「RAM ユーザーへのカスタムポリシーのアタッチ」をご参照ください。機能概要: 静的 Web サイトホスティングを有効にする前に、「静的 Web サイトホスティングの概要」を確認してください。
コマンド構文
ossutil api put-bucket-website --bucket <value> --website-configuration <value> [flags]| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
--bucket | string | はい | バケットの名前です。 |
--website-configuration | string | はい | ウェブサイト設定です。XML または JSON フォーマットを受け入れます。file:// プレフィックスを使用して、ファイルから設定をロードできます。 |
このコマンドは PutBucketWebsite API オペレーションに対応しています。すべてのパラメーターの詳細な説明については、「PutBucketWebsite」をご参照ください。サポートされているグローバルフラグについては、「グローバルコマンドラインオプション」をご参照ください。
--website-configuration の構造
--website-configuration パラメーターは XML および JSON の両方のフォーマットを受け入れます。最上位レベルのフィールドは以下のとおりです。
| フィールド | 説明 |
|---|---|
IndexDocument | デフォルトのホームページです。Suffix(ファイル名。例:index.html)、SupportSubDir(真偽値)、および Type(文字列)を含みます。 |
ErrorDocument | HTTP エラー時に返されるエラーページです。Key(ファイル名)および HttpStatus(HTTP ステータスコード)を含みます。 |
RoutingRules | 順序付きのルーティングルールリストです。各ルールには RuleNumber、Condition、および Redirect ブロックが含まれます。 |
XML 構造:
<WebsiteConfiguration>
<IndexDocument>
<Suffix>string</Suffix>
<SupportSubDir>boolean</SupportSubDir>
<Type>string</Type>
</IndexDocument>
<ErrorDocument>
<Key>string</Key>
<HttpStatus>string</HttpStatus>
</ErrorDocument>
<RoutingRules>
<RoutingRule>
<RuleNumber>integer</RuleNumber>
<Condition>
<KeyPrefixEquals>string</KeyPrefixEquals>
<HttpErrorCodeReturnedEquals>integer</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HttpRedirectCode>integer</HttpRedirectCode>
<RedirectType>string</RedirectType>
<MirrorPassQueryString>boolean</MirrorPassQueryString>
<MirrorFollowRedirect>boolean</MirrorFollowRedirect>
<MirrorHeaders>
<PassAll>boolean</PassAll>
<Pass>string</Pass>
...
<Remove>string</Remove>
...
<Set>
<Value>string</Value>
<Key>string</Key>
</Set>
...
</MirrorHeaders>
<MirrorURL>string</MirrorURL>
<EnableReplacePrefix>boolean</EnableReplacePrefix>
<ReplaceKeyWith>string</ReplaceKeyWith>
<PassQueryString>boolean</PassQueryString>
<MirrorCheckMd5>boolean</MirrorCheckMd5>
<Protocol>string</Protocol>
<HostName>string</HostName>
<TransparentMirrorResponseCodes>string</TransparentMirrorResponseCodes>
<ReplaceKeyPrefixWith>string</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
...
</RoutingRules>
</WebsiteConfiguration>JSON 構造:
{
"IndexDocument": {
"Suffix": "string",
"SupportSubDir": boolean,
"Type": "string"
},
"ErrorDocument": {
"Key": "string",
"HttpStatus": "string"
},
"RoutingRules": {
"RoutingRule": [
{
"RuleNumber": integer,
"Condition": {
"KeyPrefixEquals": "string",
"HttpErrorCodeReturnedEquals": integer
},
"Redirect": {
"RedirectType": "string",
"HttpRedirectCode": integer,
"Protocol": "string",
"HostName": "string",
"PassQueryString": boolean,
"ReplaceKeyWith": "string",
"ReplaceKeyPrefixWith": "string",
"EnableReplacePrefix": boolean,
"MirrorURL": "string",
"MirrorPassQueryString": boolean,
"MirrorFollowRedirect": boolean,
"MirrorCheckMd5": boolean,
"TransparentMirrorResponseCodes": "string",
"MirrorHeaders": {
"PassAll": boolean,
"Pass": ["string", ...],
"Remove": ["string", ...],
"Set": [
{
"Key": "string",
"Value": "string"
},
...
]
}
}
},
...
]
}
}使用例
以下の例では、examplebucket という名前のバケットに対して静的 Web サイトホスティングを設定します。
ルーティングルールを含む設定
以下の例では、3 つのルーティングルールを追加します。
XML 設定ファイルを使用する場合
website-configuration.xml を作成します。
<?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>
<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>コマンドを実行します。
ossutil api put-bucket-website --bucket examplebucket --website-configuration file://website-configuration.xmlJSON 設定ファイルを使用する場合
website-configuration.json を作成します。
{
"IndexDocument": {
"Suffix": "index.html",
"SupportSubDir": "true",
"Type": "0"
},
"ErrorDocument": {
"Key": "error.html",
"HttpStatus": "404"
},
"RoutingRules": {
"RoutingRule": [
{
"RuleNumber": "1",
"Condition": {
"KeyPrefixEquals": "abc/",
"HttpErrorCodeReturnedEquals": "404"
},
"Redirect": {
"RedirectType": "Mirror",
"PassQueryString": "true",
"MirrorURL": "http://example.com/",
"MirrorPassQueryString": "true",
"MirrorFollowRedirect": "true",
"MirrorCheckMd5": "false",
"MirrorHeaders": {
"PassAll": "true",
"Pass": [
"myheader-key1",
"myheader-key2"
],
"Remove": [
"myheader-key3",
"myheader-key4"
],
"Set": {
"Key": "myheader-key5",
"Value": "myheader-value5"
}
}
}
},
{
"RuleNumber": "2",
"Condition": {
"KeyPrefixEquals": "abc/",
"HttpErrorCodeReturnedEquals": "404",
"IncludeHeader": {
"Key": "host",
"Equals": "test.oss-cn-beijing-internal.aliyuncs.com"
}
},
"Redirect": {
"RedirectType": "AliCDN",
"Protocol": "http",
"HostName": "example.com",
"PassQueryString": "false",
"ReplaceKeyWith": "prefix/${key}.suffix",
"HttpRedirectCode": "301"
}
},
{
"RuleNumber": "3",
"Condition": {
"HttpErrorCodeReturnedEquals": "404"
},
"Redirect": {
"RedirectType": "External",
"Protocol": "http",
"HostName": "example.com",
"PassQueryString": "false",
"ReplaceKeyWith": "prefix/${key}",
"HttpRedirectCode": "302",
"EnableReplacePrefix": "false"
}
}
]
}
}コマンドを実行します。
ossutil api put-bucket-website --bucket examplebucket --website-configuration file://website-configuration.jsonインラインで設定を渡す場合
ossutil api put-bucket-website --bucket examplebucket --website-configuration "{\"IndexDocument\":{\"Suffix\":\"index.html\",\"SupportSubDir\":\"true\",\"Type\":\"0\"},\"ErrorDocument\":{\"Key\":\"error.html\",\"HttpStatus\":\"404\"},\"RoutingRules\":{\"RoutingRule\":[{\"RuleNumber\":\"1\",\"Condition\":{\"KeyPrefixEquals\":\"abc/\",\"HttpErrorCodeReturnedEquals\":\"404\"},\"Redirect\":{\"RedirectType\":\"Mirror\",\"PassQueryString\":\"true\",\"MirrorURL\":\"http://example.com/\",\"MirrorPassQueryString\":\"true\",\"MirrorFollowRedirect\":\"true\",\"MirrorCheckMd5\":\"false\",\"MirrorHeaders\":{\"PassAll\":\"true\",\"Pass\":[\"myheader-key1\",\"myheader-key2\"],\"Remove\":[\"myheader-key3\",\"myheader-key4\"],\"Set\":{\"Key\":\"myheader-key5\",\"Value\":\"myheader-value5\"}}}},{\"RuleNumber\":\"2\",\"Condition\":{\"KeyPrefixEquals\":\"abc/\",\"HttpErrorCodeReturnedEquals\":\"404\",\"IncludeHeader\":{\"Key\":\"host\",\"Equals\":\"test.oss-cn-beijing-internal.aliyuncs.com\"}},\"Redirect\":{\"RedirectType\":\"AliCDN\",\"Protocol\":\"http\",\"HostName\":\"example.com\",\"PassQueryString\":\"false\",\"ReplaceKeyWith\":\"prefix/${key}.suffix\",\"HttpRedirectCode\":\"301\"}},{\"RuleNumber\":\"3\",\"Condition\":{\"HttpErrorCodeReturnedEquals\":\"404\"},\"Redirect\":{\"ReplaceKeyWith\":\"prefix/${key}\",\"HttpRedirectCode\":\"302\",\"EnableReplacePrefix\":\"false\",\"PassQueryString\":\"false\",\"Protocol\":\"http\",\"HostName\":\"example.com\",\"RedirectType\":\"External\"}}]}}"