Reviewed-by: Sabelnikov, Dmitriy <dmitriy.sabelnikov@t-systems.com> Co-authored-by: zhangyue <zhangyue164@huawei.com> Co-committed-by: zhangyue <zhangyue164@huawei.com>
27 KiB
Configuring Static Website Hosting for a Bucket
Functions
OBS allows you to store static web page resources such as HTML web pages, flash files, videos, and audios in a bucket. When a client accesses these resources from the website endpoint of the bucket, the browser can directly resolve and present the resources to the client. This operation is applicable to:
- Redirecting all requests to a website endpoint.
- Adding routing rules that redirect specific requests.
You can perform this operation to create or update the website configuration of a bucket.
To perform this operation, you must have the PutBucketWebsite permission. By default, only the bucket owner can perform this operation. The bucket owner can grant the permission to other users by configuring the bucket policy or user policy.
Request Syntax
1 2 3 4 5 6 7 8 9 10 | PUT /?website HTTP/1.1 Host: bucketname.obs.region.example.com Content-Length: length Date: date Authorization: authorization <WebsiteConfiguration> <RedirectAllRequestsTo> <HostName>hostName</HostName> </RedirectAllRequestsTo> </WebsiteConfiguration> |
Request Parameters
This request contains no message parameters.
Request Headers
This request uses common headers. For details, see Table 3.
Request Elements
This request contains elements to specify the website configuration in XML format.
- To redirect all website requests sent to the bucket's website endpoint, add the elements as described in Table 1.
Table 1 Elements for redirecting all website requests Element
Description
Mandatory
WebsiteConfiguration
Root node configured on the website
Type: container
Ancestor: none
Yes
RedirectAllRequestsTo
Describes the redirection behavior for every request to this bucket's website endpoint. If this element is present, no other siblings are allowed.
Type: container
Ancestor: WebsiteConfiguration
Yes
HostName
Name of the host where requests will be redirected
Type: string
Ancestor: RedirectAllRequestsTo
Yes
Protocol
The HTTP or HTTPS protocol used in redirecting requests. The default protocol is HTTP.
Type: string
Ancestor: RedirectAllRequestsTo
No
- To configure redirection rules, add the elements as described in Table 2.
Table 2 Elements for adding rules that redirect requests Element
Description
Mandatory
WebsiteConfiguration
Root element for the website configuration
Type: container
Ancestor: none
Yes
IndexDocument
Suff element
Type: container
Ancestor: WebsiteConfiguration
Yes
Suffix
Suffix that is appended to a request initiated for a directory on the website endpoint. For example, if the suffix is index.html and you request for samplebucket/images/, the data that is returned will be for the object with the key name images/index.html in the samplebucket bucket. Suffix cannot be empty or contain slashes (/).
Type: string
Ancestor: IndexDocument
Yes
ErrorDocument
Key element
Type: container
Ancestor: WebsiteConfiguration
No
Key
Object key that is used when a 4XX error occurs. This element identifies the page that is returned when a 4XX error occurs.
Type: string
Ancestor: ErrorDocument
Condition: Required when ErrorDocument is specified.
No
RoutingRules
Routing element
Type: container
Ancestor: WebsiteConfiguration
No
RoutingRule
Element of a redirection rule. A redirection rule contains a Condition and a Redirect. When the Condition is matched, Redirect takes effect.
Type: container
Ancestor: RoutingRules
At least the RoutingRule element is required.
Yes
Condition
Element for describing a condition that must be met for the specified redirection to apply.
Type: container
Ancestor: RoutingRule
No
KeyPrefixEquals
Object key name prefix when the redirection is applied.
Example:
- To redirect the request for object ExamplePage.html, the KeyPrefixEquals is set to ExamplePage.html.
Type: string
Ancestor: Condition
Condition: Required when the ancestor element Condition is specified and sibling HttpErrorCodeReturnedEquals is not specified. If two conditions are specified, both conditions must be true for the Redirect to be applied.
No
HttpErrorCodeReturnedEquals
HTTP error code returned after the Redirect has taken effect. The specified Redirect is applied only when the error code returned equals this value.
Example:
- If you want to redirect requests to NotFound.html when HTTP error code 404 is returned, set HttpErrorCodeReturnedEquals to 404 in Condition, and set ReplaceKeyWith to NotFound.html in Redirect.
Type: string
Ancestor: Condition
Condition: Required when ancestor element Condition is specified and sibling KeyPrefixEquals is not specified. If multiple conditions are specified, the Redirect takes effect only after all conditions are met.
No
Redirect
Element for redirection information. You can redirect requests to another host, to another web page, or with another protocol. You can specify an error code to be returned after an error.
Type: container
Ancestor: RoutingRule
Yes
Protocol
Protocol used in the redirection request
Type: string
Ancestor: Redirect
Value options: http, https
Condition: Not required if one of the siblings is present.
No
HostName
Host name used in the redirection request.
Type: string
Ancestor: Redirect
Condition: Not required if one of the siblings is present.
No
ReplaceKeyPrefixWith
Object key prefix used in the redirection request.
Example:
- To redirect all requests for (objects under) docs to (objects under) documents, set KeyPrefixEquals to docs in Condition and ReplaceKeyPrefixWith to documents in Redirect.
Type: string
Ancestor: Redirect
Condition: Not required if one of the siblings is present. Can be present only if ReplaceKeyWith is not provided.
No
ReplaceKeyWith
Object key used in the redirection request. For example, redirect requests to error.html.
Type: string
Ancestor: Redirect
Condition: Not required if one of the siblings is present. Can be present only if ReplaceKeyPrefixWith is not provided.
No
HttpRedirectCode
HTTP status code returned after the redirection request
Type: string
Ancestor: Redirect
Condition: Not required if one of the siblings is present.
No
Response Syntax
1 2 3 | HTTP/1.1 status_code Date: date Content-Length: length |
Response Headers
The response to the request uses common headers. For details, see Table 1.
Response Elements
This response contains no element.
Error Responses
No special error responses are returned. For details about error responses, see Table 2.
Sample Request
1 2 3 4 5 6 7 8 9 10 11 12 13 | PUT /?website HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.example.com Accept: */* Date: WED, 01 Jul 2015 03:40:29 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:pUK7Yp0yebnq4P6gqzVjoS7whoM= Content-Length: 194 <WebsiteConfiguration xmlns="http://obs.example.com/doc/2015-06-30/"> <RedirectAllRequestsTo> <HostName>www.example.com</HostName> </RedirectAllRequestsTo> </WebsiteConfiguration> |
Sample Response
1 2 3 4 5 6 | HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF2600000164360D144670B9D02AABC6 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSItqMZ/AoFUX97l1xx8s67V3cCQtXWk Date: WED, 01 Jul 2015 03:40:29 GMT Content-Length: 0 |