La operación PutBucketWebsite configura un bucket para el hosting de sitios web estáticos y establece las reglas de redirección (RoutingRule).
Notas de uso
Los sitios web estáticos se componen de contenido estático, incluidos scripts del lado del cliente como JavaScript. OSS no admite procesamiento del lado del servidor, como PHP, JSP o ASP.NET.
PutBucketWebsite requiere el permiso
oss:PutBucketWebsite. Grant a custom access policy to a RAM user.-
Funciones
Configura la página principal predeterminada, la página 404 predeterminada y las reglas de redirección (RoutingRule). Las reglas de redirección admiten redireccionamientos 3xx y retorno al origen basado en espejo.
-
Acceso a sitios web estáticos mediante nombres de dominio personalizados
Para acceder a un sitio web estático con un nombre de dominio personalizado, agregue un registro CNAME. Bind a custom domain name.
-
Páginas de índice y de error
Especifique una página de índice y una página de error. Ambas deben ser objetos dentro del bucket.
-
Acceso anónimo al dominio raíz
Una vez configurado el hosting de sitios web estáticos, OSS devuelve la página de índice para las solicitudes anónimas al dominio raíz. Las solicitudes firmadas al dominio raíz devuelven el resultado de la operación GetBucket (ListObjects).
Sintaxis de la solicitud
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>
Encabezados de solicitud
DescribeRegions utiliza únicamente encabezados de solicitud comunes. Para obtener más información, consulte Common request headers.
Parámetros de solicitud
-
Contenido de WebsiteConfiguration
Nombre
Tipo
Obligatorio
Descripción
WebsiteConfiguration
Contenedor
Sí
El nodo raíz.
Nodo padre: Ninguna
-
Contenido de IndexDocument
Nombre
Tipo
Obligatorio
Descripción
IndexDocument
Contenedor
Condicional
Debe especificar como mínimo uno de los siguientes contenedores: IndexDocument, ErrorDocument y RoutingRules.
El contenedor de la página principal predeterminada.
Nodo padre: WebsiteConfiguration
Suffix
Cadena
Condicional
Este parámetro es obligatorio si especifica el nodo padre IndexDocument.
La página principal predeterminada.
OSS devuelve esta página para las solicitudes a URL que terminan con una barra diagonal (/).
Nodo padre: IndexDocument
SupportSubDir
Cadena
No
Indica si se deben redirigir las solicitudes de un subdirectorio a la página de índice de dicho subdirectorio. Valores válidos:
-
true: Redirige las solicitudes a la página de índice del subdirectorio.
-
false (predeterminado): No redirige las solicitudes a la página de índice del subdirectorio. En su lugar, las solicitudes se redirigen a la página de índice del directorio raíz.
Por ejemplo, si la página principal predeterminada es index.html y se envía una solicitud a
bucket.oss-cn-hangzhou.aliyuncs.com/subdir/. Si establece SupportSubDir en false, la solicitud se redirige abucket.oss-cn-hangzhou.aliyuncs.com/index.html. Si establece SupportSubDir en true, la solicitud se redirige abucket.oss-cn-hangzhou.aliyuncs.com/subdir/index.html.Nodo padre: IndexDocument
Type
Enumeración
No
La acción a ejecutar cuando se configura la página principal predeterminada, el nombre del objeto accedido no termina con una barra diagonal (/) y el objeto no existe. Esta acción solo surte efecto cuando SupportSubDir se establece en true y se aplica después de RoutingRule y antes de ErrorFile.
Por ejemplo, si la página principal predeterminada es index.html, se envía una solicitud para la ruta de archivo
bucket.oss-cn-hangzhou.aliyuncs.com/abcy el objeto abc no existe. Las acciones para los diferentes valores de Type son las siguientes:-
0 (predeterminado): Comprueba si existe abc/index.html. La ruta tiene el formato
Object + / + Homepage. Si el objeto existe, OSS devuelve una redirección 302 a la ruta codificada en URL/abc/. La ruta tiene el formato/ + Object + /. Si el objeto no existe, OSS devuelve un error 404 y luego busca una página de error. -
1: Devuelve un error 404 con el código de error NoSuchKey y luego busca una página de error.
-
2: Comprueba si existe abc/index.html. Si el objeto existe, se devuelve su contenido. Si el objeto no existe, OSS devuelve un error 404 y luego busca una página de error.
Nodo padre: IndexDocument
-
-
Contenido del documento de error
Nombre
Tipo
Obligatorio
Descripción
ErrorDocument
Contenedor
Condicional
Debe especificar como mínimo uno de los siguientes contenedores: IndexDocument, ErrorDocument y RoutingRules.
El contenedor de la página de error 404.
Nodo padre: WebsiteConfiguration
Key
Cadena
Condicional
Este parámetro es obligatorio si especifica el nodo padre ErrorDocument.
La página de error.
Se devuelve cuando el objeto solicitado no existe.
Nodo padre: ErrorDocument
HttpStatus
Cadena
No
El código de estado HTTP que se devuelve junto con la página de error.
Valores válidos: 200, 404 (predeterminado)
Nodo padre: ErrorDocument
-
RoutingRules|RoutingRule|RuleNumber
Nombre
Tipo
Obligatorio
Descripción
RoutingRules
Contenedor
Condicional
Debe especificar como mínimo uno de los siguientes contenedores: IndexDocument, ErrorDocument y RoutingRules.
El contenedor de las reglas de redirección.
Nodo padre: WebsiteConfiguration
RoutingRule
Contenedor
No
Una regla de redirección o una regla de retorno al origen basada en espejo. Máximo: 20 reglas.
Nodo padre: RoutingRules
RuleNumber
Entero positivo
Condicional
Este parámetro es obligatorio si especifica el nodo padre RoutingRule.
El número de secuencia. OSS evalúa las reglas en orden ascendente y se detiene en la primera coincidencia.
Nodo padre: RoutingRule
-
Contenido de Condition en RoutingRule
Nombre
Tipo
Obligatorio
Descripción
Condition
Contenedor
Condicional
Este parámetro es obligatorio si especifica el nodo padre RoutingRule.
Las condiciones de coincidencia.
Deben cumplirse todas las condiciones para que se ejecute la regla.
Nodo padre: RoutingRule
KeyPrefixEquals
Cadena
No
La clave del objeto debe tener este prefijo para que se aplique la regla.
Nodo padre: Condition
HttpErrorCodeReturnedEquals
Código de estado HTTP
No
El código de estado HTTP devuelto para el objeto solicitado que activa esta regla. Para el retorno al origen basado en espejo, establézcalo en 404.
Nodo padre: Condition
IncludeHeader
Contenedor
No
La solicitud debe incluir el encabezado y el valor especificados para que se aplique la regla. Puede especificar hasta 10 encabezados.
Nodo padre: Condition
Key
Cadena
Sí
Esta regla se aplica solo si la solicitud contiene el encabezado especificado y su valor coincide exactamente con el valor definido en Equals.
Nodo padre: IncludeHeader
Equals
Cadena
No
El valor del encabezado de la solicitud. La regla se aplica solo si la solicitud incluye el encabezado especificado por Key y su valor coincide con este valor.
Nodo padre: IncludeHeader
KeySuffixEquals
Cadena
No
La clave del objeto debe tener este sufijo para que se aplique la regla.
El valor predeterminado está vacío, lo que significa que no se coincide con ningún sufijo.
Nodo padre: Condition
-
Configuración de redirección
Nombre
Tipo
Obligatorio
Descripción
Redirect
Contenedor
Condicional
Este parámetro es obligatorio si especifica el nodo padre RoutingRule.
La acción a ejecutar cuando se cumple la regla.
Nodo padre: RoutingRule
RedirectType
Cadena
Condicional
Este parámetro es obligatorio si especifica el nodo padre Redirect.
El tipo de redirección. Valores válidos:
-
Mirror: Retorno al origen basado en espejo.
-
External: Redirección externa. OSS devuelve una redirección 3xx a otra dirección.
-
AliCDN: Redirección de Alibaba Cloud CDN. Este tipo se utiliza para Alibaba Cloud CDN. A diferencia de una redirección externa, OSS agrega un encabezado adicional a la solicitud. Cuando Alibaba Cloud CDN detecta este encabezado, redirige la solicitud a la dirección especificada y devuelve los datos recuperados al usuario, en lugar de devolverle una solicitud de redirección 3xx.
Nodo padre: Redirect
PassQueryString
Booleano
No
Indica si se debe incluir la cadena de consulta de la solicitud original en la solicitud de redirección o de retorno al origen.
Por ejemplo, un usuario envía una solicitud con la cadena de consulta
?a=b&c=d. Si establece PassQueryString en true y la regla especifica una redirección 302, el encabezado Location en la respuesta incluye la cadena de consulta, comoLocation:example.com?a=b&c=d. Si la regla especifica un retorno al origen basado en espejo, la solicitud de retorno al origen también incluye la cadena de consulta.Valores válidos: true, false (predeterminado)
Nodo padre: Redirect
MirrorURL
Cadena
Condicional
Este parámetro es obligatorio si RedirectType se establece en Mirror.
La dirección del servidor de origen para el retorno al origen basado en espejo. Solo surte efecto cuando RedirectType es Mirror.
La dirección debe comenzar con http:// o https:// y terminar con una barra diagonal (/). OSS anexa el nombre del objeto a esta dirección para crear la URL de retorno al origen.
Por ejemplo, si el objeto solicitado es myobject y establece este parámetro en
http://example.com/, la URL de retorno al origen eshttp://example.com/myobject. Si establece este parámetro enhttp://example.com/dir1/, la URL de retorno al origen eshttp://example.com/dir1/myobject.Nodo padre: Redirect
MirrorPassQueryString
Booleano
No
Igual que PassQueryString pero con mayor prioridad. Solo surte efecto cuando RedirectType es Mirror.
Valor predeterminado: false
Nodo padre: Redirect
MirrorFollowRedirect
Booleano
No
Indica si se deben seguir las redirecciones 3xx del servidor de origen. Solo surte efecto cuando RedirectType es Mirror.
Por ejemplo, el servidor de origen devuelve una redirección 302 con un encabezado Location.
-
Si establece este parámetro en true, OSS envía una nueva solicitud a la dirección especificada en el encabezado Location.
Se sigue un máximo de 10 redirecciones. Si el número de redirecciones supera 10, la solicitud de retorno al origen falla.
-
Si establece este parámetro en false, OSS devuelve la redirección 302 y pasa el encabezado Location al cliente.
Valor predeterminado: true
Nodo padre: Redirect
MirrorCheckMd5
Booleano
No
Indica si se debe verificar el hash MD5 del cuerpo de respuesta del servidor de origen. Solo surte efecto cuando RedirectType es Mirror.
Cuando MirrorCheckMd5 es true y la respuesta de origen incluye un encabezado Content-Md5, OSS verifica los datos obtenidos con respecto al valor del encabezado. Los datos que no coincidan no se guardan.
Valor predeterminado: false
Nodo padre: Redirect
MirrorHeaders
Contenedor
No
Encabezados que se incluirán en la solicitud de retorno al origen. Solo surte efecto cuando RedirectType es Mirror.
Nodo padre: Redirect
PassAll
Booleano
No
Indica si se deben pasar todos los encabezados de solicitud al servidor de origen, excepto los siguientes. Solo surte efecto cuando RedirectType es Mirror.
-
Encabezados como content-length, authorization2, authorization, range y date
-
Encabezados que comienzan con oss-, x-oss- o x-drs-
Valor predeterminado: false
Nodo padre: MirrorHeaders
Pass
Cadena
No
Los encabezados específicos que se pasarán al servidor de origen. Solo surte efecto cuando RedirectType es Mirror.
Cada encabezado puede tener una longitud máxima de 1,024 bytes y solo puede contener dígitos (0-9), letras (a-z, A-Z) y guiones (-).
Puede especificar hasta 10 encabezados.
Nodo padre: MirrorHeaders
Remove
Cadena
No
Los encabezados específicos cuyo paso al servidor de origen se prohibirá. Solo surte efecto cuando RedirectType es Mirror.
Cada encabezado tiene una longitud máxima de 1024 bytes y utiliza el mismo conjunto de caracteres que Pass.
Puede especificar hasta 10 encabezados. Este parámetro se usa normalmente junto con PassAll.
Nodo padre: MirrorHeaders
Set
Contenedor
No
Establece un encabezado para incluir en la solicitud de retorno al origen, independientemente de si la solicitud original lo contenía. Solo surte efecto cuando RedirectType es Mirror.
Puede asignar este contenedor a un máximo de 10 grupos.
Nodo padre: MirrorHeaders
Key
Cadena
Condicional
Este parámetro es obligatorio si especifica el nodo padre Set.
La clave del encabezado a establecer. La clave puede tener una longitud máxima de 1,024 bytes y solo puede contener dígitos (0-9), letras (a-z, A-Z) y guiones (-). Solo surte efecto cuando RedirectType es Mirror.
Nodo padre: Set
Value
Cadena
Condicional
Este parámetro es obligatorio si especifica el nodo padre Set.
El valor del encabezado a establecer. El valor puede tener una longitud máxima de 1,024 bytes y no puede contener
\r\n. Solo surte efecto cuando RedirectType es Mirror.Nodo padre: Set
Protocol
Cadena
No
El protocolo a utilizar para la redirección. Solo surte efecto cuando RedirectType es External o AliCDN.
Por ejemplo, si el objeto solicitado es test, establece el destino de redirección en
example.comy configura Protocol en https, el encabezado Location seráhttps://example.com/test.Valores válidos: http, https.
Nodo padre: Redirect
HostName
Cadena
No
El nombre de dominio a utilizar para la redirección. El nombre de dominio debe ser válido.
Por ejemplo, si el objeto solicitado es test, configura Protocol en https y establece HostName en
example.com, el encabezado Location seráhttps://example.com/test.Nodo padre: Redirect
ReplaceKeyPrefixWith
Cadena
No
La cadena con la que se reemplazará el prefijo de la clave del objeto durante la redirección. Si el prefijo está vacío, esta cadena se inserta al principio de la clave del objeto.
NotaPuede especificar ReplaceKeyWith o ReplaceKeyPrefixWith, pero no ambos.
Por ejemplo, si el objeto solicitado es abc/test.txt, establece KeyPrefixEquals en abc/ y configura ReplaceKeyPrefixWith en def/, el encabezado Location será
http://example.com/def/test.txt.Nodo padre: Redirect
EnableReplacePrefix
Booleano
No
Si este parámetro se establece en true, el prefijo del objeto se reemplaza con el valor de ReplaceKeyPrefixWith. Si este parámetro no se especifica o está vacío, el prefijo del objeto se trunca.
NotaNo puede establecer este parámetro en true si el parámetro ReplaceKeyWith no está vacío.
Valor predeterminado: false
Nodo padre: Redirect
ReplaceKeyWith
Cadena
No
Reemplaza toda la clave del objeto durante la redirección. Utilice la variable ${key} para hacer referencia a la clave original del objeto.
Por ejemplo, si el objeto solicitado es test y establece ReplaceKeyWith en
prefix/${key}.suffix, el encabezado Location seráhttp://example.com/prefix/test.suffix.Nodo padre: Redirect
HttpRedirectCode
Código de estado HTTP
No
El código de estado HTTP a devolver para la redirección. Solo surte efecto cuando RedirectType es External o AliCDN.
Valores válidos: 301 (predeterminado), 302, 307.
Nodo padre: Redirect
-
Encabezados de respuesta
La respuesta contiene únicamente encabezados de respuesta comunes. Para obtener más información, consulte Common response headers.
Ejemplos
-
Ejemplo de solicitud
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> -
Ejemplo de respuesta
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 -
Ejemplo completo
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)
Comando de ossutil: put-bucket-website.
Códigos de error
|
Código de error |
Código de estado HTTP |
Descripción |
|
InvalidDigest |
400 |
El valor del encabezado Content-MD5 no coincide con el hash MD5 que OSS calculó para el cuerpo de la solicitud. |