(Opcional) Configuración del redireccionamiento de páginas web - Amazon Simple Storage Service

(Opcional) Configuración del redireccionamiento de páginas web

Si su bucket de Amazon S3 está configurado para el alojamiento de sitios web estático, puede configurar el redireccionamiento para el bucket o los objetos que contiene. Tiene las siguientes opciones para configurar el redireccionamiento.

Redirigir solicitudes de un punto de enlace de sitio web de su bucket a otro bucket o dominio

Puede redirigir todas las solicitudes de un punto de enlace de sitio web de un bucket a otro bucket o dominio. Si redirige todas las solicitudes, las que se hayan realizado al punto de enlace del sitio web se redirigirán al bucket o dominio especificado.

Por ejemplo, si su dominio raíz es example.com, y desea enviar solicitudes para http://example.com y para http://www.example.com, debe crear dos buckets denominados example.com y www.example.com. A continuación, mantenga el contenido del bucket example.com y configure el otro bucket www.example.com para redirigir todas las solicitudes al bucket example.com. Para obtener más información, consulte Configuración de un sitio web estático mediante un nombre de dominio personalizado.

Para redirigir solicitudes para un punto de enlace de sitio web del bucket
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. En Buckets (Buckets), elija el nombre del bucket del que desea que procedan las solicitudes redirigidas (por ejemplo, www.example.com).

  3. Seleccione Properties (Propiedades).

  4. Elija Static website hosting (Alojamiento de sitios web estáticos), elija Edit (Editar).

  5. Elija Redirect requests for an object (Redirigir solicitudes de un objeto).

  6. En el cuadro Host name (Nombre de host) , escriba el punto de enlace de sitio web para el bucket o el dominio personalizado.

    Por ejemplo, si redirigiera las solicitudes a una dirección de dominio raíz, escribiría example.com.

  7. En Protocol (Protocolo), elija el protocolo para las solicitudes redirigidas (none (ninguno),http o https).

    Si no especifica un protocolo, la opción predeterminada es none (ninguno).

  8. Elija Save changes (Guardar cambios).

Configurar reglas de redireccionamiento para utilizar redireccionamiento condicional avanzado

Utilizando reglas avanzadas de redireccionamiento, puede dirigir condicionalmente las solicitudes según nombres de clave de objeto, prefijos en la solicitud o códigos de respuesta específicos. Por ejemplo, supongamos que elimina o cambia el nombre de un objeto en el bucket. Puede añadir una regla de enrutamiento que redireccione la solicitud a otro objeto. Si desea que una carpeta no esté disponible, puede añadir una regla de enrutamiento para redirigir la solicitud a otra página web. Además, puede añadir una regla de enrutamiento para gestionar condiciones de error dirigiendo las solicitudes que devuelven un error a otro dominio cuando se procesa el error.

Cuando habilite el alojamiento de sitios web estáticos para el bucket, puede especificar reglas de redireccionamiento avanzadas. Amazon S3 tiene una limitación de 50 reglas de enrutamiento por configuración de sitio web. Si necesita más de 50 reglas de enrutamiento, puede utilizar la redirección de objetos. Para obtener más información, consulte Uso de la consola de S3.

Para obtener más información acerca de la configuración de reglas de enrutamiento mediante la API de REST, consulte PutBucketWebsite en la referencia de la API de Amazon Simple Storage Service.

importante

Para crear reglas de redireccionamiento en la nueva consola de Amazon S3, debe utilizar JSON. Para ver ejemplos de JSON, consulte Ejemplos de reglas de redireccionamiento.

Para configurar reglas de redirección para un sitio web estático

Para agregar reglas de redirección para un bucket que ya tiene habilitado el alojamiento de sitios web estático, siga estos pasos.

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. En la lista Buckets, elija el nombre del bucket que ha configurado como sitio web estático.

  3. Seleccione Properties (Propiedades).

  4. Elija Static website hosting (Alojamiento de sitios web estáticos), elija Edit (Editar).

  5. En la casilla Redirection rules (Reglas de redireccionamiento), introduzca las reglas de redireccionamiento.

    En la consola de S3, describa las reglas mediante JSON. Para ver ejemplos de JSON, consulte Ejemplos de reglas de redireccionamiento. Amazon S3 tiene una limitación de 50 reglas de enrutamiento por configuración de sitio web.

  6. Elija Save changes (Guardar cambios).

Elementos de la regla enrutamiento

Lo que sigue es la sintaxis general para definir las reglas de redireccionamiento en una configuración de sitio web en JSON y XML. Para configurar reglas de redireccionamiento en la nueva consola de S3, debe utilizar JSON. Para ver ejemplos de JSON, consulte Ejemplos de reglas de redireccionamiento.

JSON
[ { "Condition": { "HttpErrorCodeReturnedEquals": "string", "KeyPrefixEquals": "string" }, "Redirect": { "HostName": "string", "HttpRedirectCode": "string", "Protocol": "http"|"https", "ReplaceKeyPrefixWith": "string", "ReplaceKeyWith": "string" } } ] Note: Redirect must each have at least one child element. You can have either ReplaceKeyPrefix with or ReplaceKeyWith but not both.
XML
<RoutingRules> = <RoutingRules> <RoutingRule>...</RoutingRule> [<RoutingRule>...</RoutingRule> ...] </RoutingRules> <RoutingRule> = <RoutingRule> [ <Condition>...</Condition> ] <Redirect>...</Redirect> </RoutingRule> <Condition> = <Condition> [ <KeyPrefixEquals>...</KeyPrefixEquals> ] [ <HttpErrorCodeReturnedEquals>...</HttpErrorCodeReturnedEquals> ] </Condition> Note: <Condition> must have at least one child element. <Redirect> = <Redirect> [ <HostName>...</HostName> ] [ <Protocol>...</Protocol> ] [ <ReplaceKeyPrefixWith>...</ReplaceKeyPrefixWith> ] [ <ReplaceKeyWith>...</ReplaceKeyWith> ] [ <HttpRedirectCode>...</HttpRedirectCode> ] </Redirect> Note: <Redirect> must have at least one child element. You can have either ReplaceKeyPrefix with or ReplaceKeyWith but not both.

En la siguiente tabla se describen los elementos en la regla de enrutamiento.

Nombre Descripción
RoutingRules Contenedor de una colección de elementos RoutingRule.
RoutingRule

Una regla que identifica una condición y el redireccionamiento que se aplica cuando se cumple la condición.

Condición:

  • un contenedor RoutingRules debe tener una regla de enrutamiento como mínimo.

Condition

Contenedor para describir una condición que debe cumplirse para la aplicación de un redireccionamiento específico. Si la regla de enrutamiento no incluye una condición, esta regla se aplicará a todas las solicitudes.

KeyPrefixEquals

El prefijo de un nombre de clave de objeto desde el que se redireccionan las solicitudes.

El KeyPrefixEquals será necesario si no se especifica HttpErrorCodeReturnedEquals. Si se especifican los elementos KeyPrefixEquals y HttpErrorCodeReturnedEquals, ambos deben ser verdaderos para que se cumpla la condición.

HttpErrorCodeReturnedEquals

El código de error HTTP que debe coincidir para que se aplique el redireccionamiento. Si se produce un error y el código del error coincide con este valor, se aplicará el redireccionamiento especificado.

El HttpErrorCodeReturnedEquals será necesario si no se especifica KeyPrefixEquals. Si se especifican los elementos KeyPrefixEquals y HttpErrorCodeReturnedEquals, ambos deben ser verdaderos para que se cumpla la condición.

Redirect

Un elemento del contenedor que provee instrucciones para redireccionar la solicitud. Puede redireccionar solicitudes a otro host o a otra página, o puede especificar el uso de otro protocolo. Cada RoutingRule debe tener un elemento Redirect. El elemento Redirect debe tener uno de los siguientes elementos del mismo nivel como mínimo: Protocol, HostName, ReplaceKeyPrefixWith, ReplaceKeyWith o HttpRedirectCode.

Protocol

El protocolo, http o https, utilizado en el encabezado Location que se devuelve en la respuesta.

No se requiere Protocol, si se provee uno de sus elementos del mismo nivel.

HostName

El nombre de host utilizado en el encabezado Location que se devuelve en la respuesta.

No se requiere HostName, si se provee uno de sus elementos del mismo nivel.

ReplaceKeyPrefixWith

El prefijo del nombre de clave de objeto que sustituye al valor de KeyPrefixEquals en la solicitud de redireccionamiento.

No se requiere ReplaceKeyPrefixWith, si se provee uno de sus elementos del mismo nivel. Solo se puede proveer si no se proporciona ReplaceKeyWith.

ReplaceKeyWith

La clave del objeto que utilizar en el encabezado Location que se devuelve en la respuesta.

No se requiere ReplaceKeyWith, si se provee uno de sus elementos del mismo nivel. Solo se puede proveer si no se proporciona ReplaceKeyPrefixWith.

HttpRedirectCode

El código de redireccionamiento de HTTP utilizado en el encabezado Location que se devuelve en la respuesta.

No se requiere HttpRedirectCode, si se provee uno de sus elementos del mismo nivel.

Ejemplos de reglas de redireccionamiento

En los siguientes ejemplos se explican las tareas de redireccionamiento más comunes:

importante

Para crear reglas de redireccionamiento en la nueva consola de Amazon S3, debe utilizar JSON.

ejemplo 1: redireccionamiento luego de cambiar el nombre de un prefijo de clave.

Supongamos que el bucket contiene los siguientes objetos:

  • index.html

  • docs/article1.html

  • docs/article2.html

Ha decidido cambiar el nombre de la carpeta docs/ a documents/. Después de hacer este cambio, deberá redireccionar las solicitudes para el prefijo docs/ a documents/. Por ejemplo, la solicitud para docs/article1.html se redireccionará a documents/article1.html.

En este caso, debe añadir la siguiente regla de enrutamiento a la configuración del sitio web.

JSON
[ { "Condition": { "KeyPrefixEquals": "docs/" }, "Redirect": { "ReplaceKeyPrefixWith": "documents/" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>docs/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>
ejemplo 2: redireccionamiento de solicitudes de una carpeta eliminada a una página.

Supongamos que elimina la carpeta images/ (es decir, que elimina todos los objetos con el prefijo de clave images/). Puede añadir una regla de enrutamiento que redireccione las solicitudes de cualquier objeto con el prefijo de clave images/ a una página denominada folderdeleted.html.

JSON
[ { "Condition": { "KeyPrefixEquals": "images/" }, "Redirect": { "ReplaceKeyWith": "folderdeleted.html" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>images/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith> </Redirect> </RoutingRule> </RoutingRules>
ejemplo 3: redireccionamiento de error de HTTP.

Supongamos que cuando no se encuentra un objeto solicitado, desea redireccionar las solicitudes a una instancia Amazon Elastic Compute Cloud (Amazon EC2). Debe añadir una regla de redireccionamiento para que, cuando se devuelva el código de estado 404 (Not Found) [404 (No encontrado)], se redireccione al visitante del sitio a una instancia Amazon EC2 que se encarga de la solicitud.

En el siguiente ejemplo, también se inserta el prefijo de clave de objeto report-404/ en el redireccionamiento. Por ejemplo, si solicita la página ExamplePage.html y se traduce en un error HTTP 404, la solicitud se redirecciona a la página report-404/ExamplePage.html en la instancia Amazon EC2 especificada. Si no hay una regla de enrutamiento y se produce un error HTTP 404, se devolverá el documento de error especificado en la configuración.

JSON
[ { "Condition": { "HttpErrorCodeReturnedEquals": "404" }, "Redirect": { "HostName": "ec2-11-22-333-44.compute-1.amazonaws.com", "ReplaceKeyPrefixWith": "report-404/" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals > </Condition> <Redirect> <HostName>ec2-11-22-333-44.compute-1.amazonaws.com</HostName> <ReplaceKeyPrefixWith>report-404/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>

Redirigir solicitudes de un objeto

Puede redirigir las solicitudes de un objeto a otro objeto o URL estableciendo la ubicación de redirección del sitio web en los metadatos del objeto. Para configurar el redireccionamiento, debe añadir la propiedad x-amz-website-redirect-location a los metadatos del objeto. En la consola de Amazon S3, puede establecer la ubicación del redireccionamiento de un sitio web en los metadatos del objeto. Si utiliza la API de Amazon S3, se establece x-amz-website-redirect-location. Luego, el sitio web interpreta el objeto como un redireccionamiento 301.

Para redireccionar una solicitud a otro objeto, debe establecer la ubicación de redireccionamiento para la clave del objeto de destino. Para redireccionar una solicitud a un URL externo, debe establecer la ubicación de redireccionamiento para el URL que desee. Para obtener más información acerca de los metadatos del objeto, consulte Metadatos de objetos definidos por el sistema.

Cuando establece un redireccionamiento de página, puede conservar o eliminar el contenido del objeto de destino. Por ejemplo, si tiene un objeto page1.html en el bucket, puede redirigir cualquier solicitud de esta página a otro objeto, page2.html. Dispone de dos opciones para hacerlo:

  • Mantenga el contenido del objeto page1.html y redirija las solicitudes de página.

  • Elimine el contenido de page1.html y cargue un objeto de cero bytes denominado page1.html para reemplazar el objeto existente y redirigir las solicitudes de página.

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. En la lista Buckets, elija el nombre del bucket que ha configurado como sitio web estático (por ejemplo: example.com).

  3. En Objects (Objetos), seleccione su objeto.

  4. Elija Actions (Acciones), y elija Edit metadata (Editar metadatos).

  5. Elija Metadata (Metadatos).

  6. Elija Add Metadata (Añadir metadatos).

  7. En Typo (Tipo), elija System Defined (Definido por el sistema).

  8. En Key (Clave), elija x-amz-website-redirect-location.

  9. En Value (Valor), introduzca el nombre de clave del objeto que desee redirigir, por ejemplo, /page2.html.

    Para otro objeto del mismo bucket, se requiere el prefijo / del valor. También puede establecer el valor para un URL externo, por ejemplo, http://www.example.com.

  10. Elija Edit medatada (Editar metadatos).

Las siguientes acciones de la API de Amazon S3 admiten el encabezado x-amz-website-redirect-location en la solicitud. Amazon S3 almacena el valor del encabezado en los metadatos del objeto como x-amz-website-redirect-location.

Un bucket configurado para un alojamiento de sitio web contiene el punto de enlace de sitio web y el punto de enlace REST. Una solicitud para una página que está configurada como un redireccionamiento 301 tiene los siguientes resultados posibles, en función del punto de enlace de la solicitud:

  • Punto de enlace de sitio web en región específica: Amazon S3 redirecciona la solicitud de la página según el valor de la propiedad x-amz-website-redirect-location.

  • Punto de enlace REST: Amazon S3; no redirecciona la solicitud de la página. Devuelve el objeto solicitado.

Para obtener más información acerca de los puntos de enlace, consulte Diferencias clave entre el punto de enlace de un sitio web y un punto de enlace de la API de REST.

Cuando establece un redireccionamiento de página, puede conservar o eliminar el contenido del objeto. Por ejemplo, supongamos que tiene un objeto page1.html en el bucket.

  • Para conservar el contenido de page1.html y redirigir solo las solicitudes de página, puede enviar una solicitud PUT Object - Copy para crear un nuevo objeto page1.html que utilice el objeto existente page1.html como origen. Debe establecer el encabezado x-amz-website-redirect-location en su solicitud. Cuando se completa la solicitud, la página original tendrá su contenido sin cambios, pero Amazon S3 redireccionará cualquier solicitud a esa página a la ubicación de redireccionamiento que especificó.

  • Para eliminar el contenido del objeto page1.html y redireccionar solicitudes a la página, puede enviar una solicitud PUT Object para cargar un objeto de cero bytes con la misma clave de objeto: page1.html. En la solicitud PUT, debe establecer x-amz-website-redirect-location para page1.html para el nuevo objeto. Cuando se completa la solicitud, page1.html no tendrá contenido y las solicitudes serán redireccionadas a la ubicación especificada por x-amz-website-redirect-location.

Cuando recupera el objeto con la acción GET Object, junto con los metadatos de otro objeto, Amazon S3 devuelve el encabezado x-amz-website-redirect-location en la respuesta.