(Opcional) Configurar el redireccionamiento de páginas web - Amazon Simple Storage Service

(Opcional) Configurar el redireccionamiento de páginas web

Si su bucket de Amazon S3 está configurado para el alojamiento de sitios web, puede configurar una redirección de páginas web. Tiene las siguientes opciones para configurar un redireccionamiento.

Configurar el redireccionamiento de una página en la consola de Amazon S3

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 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, configure 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.

Para redirigir solicitudes de un objeto

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

  2. Elija el nombre del bucket que ha configurado como sitio web estático (por ejemplo, example.com).

  3. En la ficha Descripción general del bucket, elija el objeto para el que desee crear una redirección.

  4. Seleccione Properties (Propiedades).

  5. Elija Metadatos.

  6. Seleccione + Añadir metadatos.

  7. En Clave, elija Ubicación de redirección del sitio web.

  8. En 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.

  9. Elija Save (Guardar).

Configurar el redireccionamiento de una página desde la API de REST

Las siguientes acciones de 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 redirige la solicitud de página según el valor de la propiedad x-amz-website-redirect-location.

  • Punto de enlace REST – Amazon S3 no redirige la solicitud de 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 otros metadatos de objeto, Amazon S3 devuelve el encabezado x-amz-website-redirect-location en la respuesta.

Redireccionar solicitudes de un punto de enlace de sitio web de un bucket a otro host

Puede redirigir todas las solicitudes de un punto de enlace de sitio web de un bucket a otro host. Si redirige todas las solicitudes, las solicitudes realizadas al punto de enlace del sitio web se redirigirán al nombre del host 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, puede 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. Elija el nombre del bucket que ha configurado como sitio web estático (por ejemplo, example.com).

  3. Seleccione Properties (Propiedades).

  4. Seleccione Static website hosting (Alojamiento de sitio web estático).

  5. Seleccione Redirect requests (Redirigir solicitudes).

  6. En el cuadro Target bucket or domain (Bucket o dominio de destino), escriba el bucket o dominio al que desea redirigir las solicitudes.

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

  7. En el cuadro Protocol (Protocolo), escriba el protocolo para las solicitudes redirigidas (http o https).

    Si no especifica un protocolo, se utiliza el protocolo de la solicitud original.

  8. Seleccione Save.

Configurar redireccionamientos condicionales avanzados

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.

Al configurar un bucket para el alojamiento de un sitio web, tiene la opción de especificar reglas avanzadas de redireccionamiento. 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 (Opcional) Configurar el redireccionamiento de páginas web.

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

Para añadir 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. Seleccione Static website hosting (Alojamiento de sitio web estático).

  5. En Reglas de redirección, introduzca las reglas de redirección.

    Debe describir las reglas con XML. Para obtener información sobre sintaxis general y ejemplos para especificar reglas de redirección, consulte Sintaxis para especificar reglas de enrutamiento. 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 Configurar el redireccionamiento de una página en la consola de Amazon S3.

  6. Seleccione Save.

Sintaxis para especificar reglas de enrutamiento

A continuación, se describe una sintaxis general para definir las reglas de enrutamiento para la configuración de un sitio web.

<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. Also, 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

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

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.

<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.

<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 redirigir las solicitudes a una instancia de Amazon Elastic Compute Cloud (Amazon EC2). Debe añadir una regla de redireccionamiento para que, cuando se devuelva el código de estado HTTP 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 redirige 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.

<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>