put-bucket-website用於將儲存空間(Bucket)設定為靜態網站託管模式並設定跳轉規則。
注意事項
阿里雲帳號預設擁有為Bucket設定靜態網站託管模式和跳轉規則的許可權。如果您需要通過RAM使用者或者STS的方式進行查看,您必須擁有
oss:PutBucketWebsite
許可權。具體操作,請參見為RAM使用者授權自訂的權限原則。在設定靜態網站之前,請確保您已瞭解該功能。詳情請參見靜態網站託管概述。
命令格式
ossutil api put-bucket-website --bucket value --website-configuration value [flags]
參數 | 類型 | 說明 |
--bucket | string | Bucket的名稱。 |
--website-configuration | string | 網站根節點。 |
說明
put-bucket-website命令對應API介面PutBucketWebsite。關於API中的具體參數含義,請參見PutBucketWebsite。
--website-configuration
--website-configuration配置選項既支援XML文法也支援JSON文法,當選項值包含file://首碼時,表示從檔案中讀取配置。
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": { "Type": "string", "Suffix": "string", "SupportSubDir": boolean }, "ErrorDocument": { "Key": "string", "HttpStatus": "string" }, "RoutingRules": { "RoutingRule": [ { "RuleNumber": integer, "Condition": { "HttpErrorCodeReturnedEquals": integer, "KeyPrefixEquals": "string" }, "Redirect": { "MirrorURL": "string", "EnableReplacePrefix": boolean, "ReplaceKeyWith": "string", "PassQueryString": boolean, "MirrorCheckMd5": boolean, "Protocol": "string", "HostName": "string", "TransparentMirrorResponseCodes": "string", "ReplaceKeyPrefixWith": "string", "HttpRedirectCode": integer, "RedirectType": "string", "MirrorPassQueryString": boolean, "MirrorFollowRedirect": boolean, "MirrorHeaders": { "PassAll": boolean, "Pass": ["string", ...], "Remove": ["string", ...], "Set": [ { "Key": "string", "Value": "string" }, ... ] } } }, ... ] } }
說明
關於支援的全域命令列選項,請參見支援的全域命令列選項。
使用樣本
以下樣本展示了如何為名為examplebucket
的靜態網站託管模式並設定跳轉規則。
使用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.xml
使用JSON設定檔,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" } }, { "Condition": { "HttpErrorCodeReturnedEquals": "404" }, "RuleNumber": "3", "Redirect": { "ReplaceKeyWith": "prefix/${key}", "HttpRedirectCode": "302", "EnableReplacePrefix": "false", "PassQueryString": "false", "Protocol": "http", "HostName": "example.com", "RedirectType": "External" } } ] } }
命令樣本如下:
ossutil api put-bucket-website --bucket examplebucket --website-configuration file://website-configuration.json
使用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\"}},{\"Condition\":{\"HttpErrorCodeReturnedEquals\":\"404\"},\"RuleNumber\":\"3\",\"Redirect\":{\"ReplaceKeyWith\":\"prefix/${key}\",\"HttpRedirectCode\":\"302\",\"EnableReplacePrefix\":\"false\",\"PassQueryString\":\"false\",\"Protocol\":\"http\",\"HostName\":\"example.com\",\"RedirectType\":\"External\"}}]}}"