

# (Opcional) Configuración del redireccionamiento de páginas web
<a name="how-to-page-redirect"></a>

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.

**Topics**
+ [Redirigir solicitudes de un punto de enlace de sitio web de su bucket a otro bucket o dominio](#redirect-endpoint-host)
+ [Configurar reglas de redireccionamiento para utilizar redireccionamiento condicional avanzado](#advanced-conditional-redirects)
+ [Redirigir solicitudes de un objeto](#redirect-requests-object-metadata)

## Redirigir solicitudes de un punto de enlace de sitio web de su bucket a otro bucket o dominio
<a name="redirect-endpoint-host"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html).

**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](https://console.aws.amazon.com/s3/).

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

1. Seleccione **Propiedades**.

1. Elija **Alojamiento de sitios web estáticos**, elija **Editar**.

1. Elija **Redirigir solicitudes de un objeto**. 

1. En el cuadro **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**.

1. En **Protocolo**, elija el protocolo para las solicitudes redirigidas (**ninguno**, **http** o **https**).

   Si no especifica un protocolo, la opción predeterminada es **ninguno**.

1. Elija **Guardar cambios**.

## Configurar reglas de redireccionamiento para utilizar redireccionamiento condicional avanzado
<a name="advanced-conditional-redirects"></a>

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](#page-redirect-using-console).

Para obtener más información acerca de la configuración de reglas de enrutamiento mediante la API de REST, consulte [PutBucketWebsite](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html) 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](#redirect-rule-examples).

**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](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets de uso general**.

1. En la lista de buckets, elija el nombre de un bucket que haya configurado como sitio web estático.

1. Seleccione **Propiedades**.

1. Elija **Alojamiento de sitios web estáticos** y luego **Editar**.

1. En la casilla **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](#redirect-rule-examples). Amazon S3 tiene una limitación de 50 reglas de enrutamiento por configuración de sitio web.

1. Elija **Guardar cambios**.

### Elementos de la regla enrutamiento
<a name="configure-bucket-as-website-routing-rule-syntax"></a>

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](#redirect-rule-examples).

------
#### [ 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: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/how-to-page-redirect.html)  | 
| 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
<a name="redirect-rule-examples"></a>

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.

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

```
[
    {
        "Condition": {
            "KeyPrefixEquals": "docs/"
        },
        "Redirect": {
            "ReplaceKeyPrefixWith": "documents/"
        }
    }
]
```

```
  <RoutingRules>
    <RoutingRule>
    <Condition>
      <KeyPrefixEquals>docs/</KeyPrefixEquals>
    </Condition>
    <Redirect>
      <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith>
    </Redirect>
    </RoutingRule>
  </RoutingRules>
```

**Example 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`.  

```
[
    {
        "Condition": {
            "KeyPrefixEquals": "images/"
        },
        "Redirect": {
            "ReplaceKeyWith": "folderdeleted.html"
        }
    }
]
```

```
  <RoutingRules>
    <RoutingRule>
    <Condition>
       <KeyPrefixEquals>images/</KeyPrefixEquals>
    </Condition>
    <Redirect>
      <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith>
    </Redirect>
    </RoutingRule>
  </RoutingRules>
```

**Example 3: redireccionamiento a otro dominio con una ruta específica**  
Suponga que desea redirigir las solicitudes de una ruta específica a otro dominio. Por ejemplo, desea redirigir las solicitudes para `/redirect/me` a `https://example.com/new/path`.  
Cuando se utilizan `HostName` y `ReplaceKeyWith` juntos, Amazon S3 crea la URL de redireccionamiento concatenando el nombre de host y la clave de reemplazo con una barra inclinada entre ellos. Por lo tanto, no debe incluir una barra diagonal inicial en el valor `ReplaceKeyWith`. Amazon S3 agrega automáticamente la barra inclinada entre el nombre de host y la clave de reemplazo.  

```
[
    {
        "Condition": {
            "KeyPrefixEquals": "redirect/me"
        },
        "Redirect": {
            "HostName": "example.com",
            "ReplaceKeyWith": "new/path"
        }
    }
]
```

```
  <RoutingRules>
    <RoutingRule>
    <Condition>
      <KeyPrefixEquals>redirect/me</KeyPrefixEquals>
    </Condition>
    <Redirect>
      <HostName>example.com</HostName>
      <ReplaceKeyWith>new/path</ReplaceKeyWith>
    </Redirect>
    </RoutingRule>
  </RoutingRules>
```
Esta configuración redirige una solicitud para `https://yourbucket.s3-website-region.amazonaws.com/redirect/me` a `https://example.com/new/path`. Tenga en cuenta que `ReplaceKeyWith` está configurado como `new/path` sin una barra diagonal inicial.

**Example 4: redireccionamiento para un error 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.  

```
[
    {
        "Condition": {
            "HttpErrorCodeReturnedEquals": "404"
        },
        "Redirect": {
            "HostName": "ec2-11-22-333-44.compute-1.amazonaws.com",
            "ReplaceKeyPrefixWith": "report-404/"
        }
    }
]
```

```
  <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
<a name="redirect-requests-object-metadata"></a>

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](#page-redirect-using-rest-api), 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](UsingMetadata.md#SysMetadata).

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. 

### Uso de la consola de S3
<a name="page-redirect-using-console"></a>

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

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

1. En **Objetos**, seleccione su objeto.

1. Elija **Acciones**, y elija **Editar metadatos**.

1. Elija **Metadatos**.

1. Elija **Agregar metadatos**.

1. En **Tipo**, elija **Definido por el sistema**.

1. En **Clave**, elija **x-amz-website-redirect-location**.

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

1. Elija **Editar metadatos**.

### Uso de la API de REST
<a name="page-redirect-using-rest-api"></a>

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`. 
+ [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [Initiate Multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [PUT Object - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)

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](WebsiteEndpoints.md#WebsiteRestEndpointDiff).

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](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html), junto con los metadatos de otro objeto, Amazon S3 devuelve el encabezado `x-amz-website-redirect-location` en la respuesta.