

# (Opcional) Configurar um redirecionamento de uma página da Web
<a name="how-to-page-redirect"></a>

Se o bucket do Amazon S3 estiver configurado para hospedagem de site estático, você poderá configurar redirecionamentos para seu bucket ou para os objetos nele contidos. As opções a seguir estão disponíveis para a configuração de redirecionamentos.

**Topics**
+ [Redirecionar solicitações para o endpoint do site do seu bucket para outro bucket ou domínio](#redirect-endpoint-host)
+ [Configurar regras de redirecionamento para usar redirecionamentos condicionais avançados](#advanced-conditional-redirects)
+ [Redirecionar solicitações para um objeto](#redirect-requests-object-metadata)

## Redirecionar solicitações para o endpoint do site do seu bucket para outro bucket ou domínio
<a name="redirect-endpoint-host"></a>

É possível redirecionar todas as solicitações de um endpoint de site de um bucket para outro bucket ou domínio. Se você redirecionar todas as solicitações, qualquer solicitação feita ao endpoint do site será redirecionada ao bucket ou domínio especificado. 

Por exemplo, se o seu domínio raiz for `example.com` e você quiser atender a solicitações para `http://example.com` e `http://www.example.com`, é necessário criar dois buckets chamados `example.com` e `www.example.com`. Depois, mantenha o conteúdo no bucket `example.com` e configure o outro bucket `www.example.com` para redirecionar todas as solicitações ao bucket `example.com`. Para obter mais informações, consulte [Configurar um site estático usando um nome de domínio personalizado](https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html).

**Como redirecionar solicitações para um endpoint de site do bucket**

1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Em **Buckets**, escolha o nome do bucket do qual você deseja redirecionar solicitações (por exemplo, `www.example.com`).

1. Escolha **Properties (Propriedades)**.

1. Em **Static website hosting (Hospedagem estática de sites)**, escolha **Edit (Editar)**.

1. Selecione **Redirect requests for an object (Redirecionar solicitações de um objeto)**. 

1. Na caixa **Host name (Nome do host)** insira o endpoint do site para seu bucket ou seu domínio personalizado.

   Por exemplo, se você estiver redirecionando para um endereço de domínio raiz, insira **example.com**.

1. Para **Protocol (Protocolo)**, escolha o protocolo para as solicitações redirecionadas (**none**,**http**, ou **https**).

   Se você não especificar um protocolo, a opção padrão será **none**.

1. Selecione **Save changes**.

## Configurar regras de redirecionamento para usar redirecionamentos condicionais avançados
<a name="advanced-conditional-redirects"></a>

Usando regras de redirecionamentos avançadas, você pode rotear solicitações condicionalmente de acordo com nomes de chave de objeto específicos, prefixos na solicitação ou códigos da resposta. Por exemplo, suponha que você exclua ou dê outro nome a um objeto em seu bucket. Você pode adicionar uma regra de roteamento que redireciona a solicitação a outro objeto. Se você deseja tornar uma pasta indisponível, será possível adicionar uma regra de roteamento para redirecionar a solicitação para outra página da Web. Você também pode adicionar uma regra de roteamento para processar condições de erro, encaminhando solicitações que retornam o erro para outro domínio quando ele é processado.

Ao habilitar a hospedagem de site estático para seu bucket, você pode especificar opcionalmente regras de redirecionamento avançadas. O Amazon S3 tem uma limitação de 50 regras de roteamento por configuração de site. Se você precisar de mais de 50 regras de roteamento, poderá usar o redirecionamento de objetos. Para obter mais informações, consulte [Uso do console do S3](#page-redirect-using-console).

Para obter mais informações sobre como configurar regras de roteamento usando a API REST, consulte [PutBucketWebsite](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html) na *Referência da API do Amazon Simple Storage Service*.

**Importante**  
Para criar regras de redirecionamento no novo console do Amazon S3, você deve usar o JSON. Para exemplos de JSON, consulte [Exemplos de regras de redirecionamento](#redirect-rule-examples).

**Para configurar regras de redirecionamento para um site estático**

Para adicionar regras de redirecionamento para um bucket que já tem alojamento de site estático ativado, siga estas etapas.

1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets de uso geral**.

1. Na lista de buckets, escolha o nome do bucket que você configurou como um site estático.

1. Escolha **Properties (Propriedades)**.

1. Em **Static website hosting (Hospedagem estática de sites)**, escolha **Edit (Editar)**.

1. Na caixa **Redirection rules (Regras de redirecionamento)**, insira suas regras de redirecionamento em JSON. 

   No console do S3, você descreve as regras usando o JSON. Para exemplos de JSON, consulte [Exemplos de regras de redirecionamento](#redirect-rule-examples). O Amazon S3 tem uma limitação de 50 regras de roteamento por configuração de site.

1. Selecione **Save changes**.

### Elementos de regra de roteamento
<a name="configure-bucket-as-website-routing-rule-syntax"></a>

Veja a seguir a sintaxe geral para definir as regras de roteamento em uma configuração de site em XML. Para configurar regras de redirecionamento no novo console do S3, use o JSON. Para exemplos de JSON, consulte [Exemplos de regras de redirecionamento](#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.
```

------

A tabela a seguir descreve os elementos na regra de roteamento.


|  Nome  |  Descrição  | 
| --- | --- | 
| RoutingRules |  Contêiner para um conjunto de elementos RoutingRule.  | 
| RoutingRule |  Uma regra que identifica uma condição e o redirecionamento que é aplicado quando a condição é satisfeita.  Condição: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/how-to-page-redirect.html)  | 
| Condition |  O contêiner para descrever uma condição que deve ser satisfeita para que o redirecionamento especificado seja aplicado. Se a regra de roteamento não incluir uma condição, a regra será aplicada a todas as solicitações.  | 
| KeyPrefixEquals |  O prefixo do nome da chave de objeto do qual as solicitações são redirecionadas.  `KeyPrefixEquals` será obrigatório se `HttpErrorCodeReturnedEquals` não for especificado. Se `KeyPrefixEquals` e `HttpErrorCodeReturnedEquals` forem especificados, ambos deverão ser verdadeiros para a condição ser satisfeita.  | 
| HttpErrorCodeReturnedEquals |  O código de erro HTTP que deve corresponder para que o redirecionamento seja aplicado. Se ocorrer um erro, e se o código de erro satisfizer esse valor, o redirecionamento especificado será aplicado. `HttpErrorCodeReturnedEquals` será obrigatório se `KeyPrefixEquals` não for especificado. Se `KeyPrefixEquals` e `HttpErrorCodeReturnedEquals` forem especificados, ambos deverão ser verdadeiros para a condição ser satisfeita.  | 
| Redirect |  O elemento do contêiner que fornece instruções para o redirecionamento da solicitação. Você pode redirecionar solicitações para outro host, ou outra página, ou pode especificar outro protocolo a ser usado. Uma `RoutingRule` deve ter um elemento `Redirect`. Um elemento `Redirect` deve conter pelo menos um dos seguintes elementos irmãos: `Protocol`, `HostName`, `ReplaceKeyPrefixWith`, `ReplaceKeyWith` ou `HttpRedirectCode`.  | 
| Protocol |  O protocolo, `http` ou `https`, que será usado no cabeçalho `Location` que é retornado na resposta.  Se um dos irmãos for fornecido, `Protocol` não será obrigatório.  | 
| HostName |  O nome do host a ser usado no cabeçalho `Location` que é retornado na resposta. Se um dos irmãos for fornecido, `HostName` não será obrigatório.  | 
| ReplaceKeyPrefixWith |  O prefixo do nome de chave de objeto que substitui o valor de `KeyPrefixEquals` na solicitação de redirecionamento.  Se um dos irmãos for fornecido, `ReplaceKeyPrefixWith` não será obrigatório. Poderá ser fornecido somente se `ReplaceKeyWith` não for fornecido.  | 
| ReplaceKeyWith |  A chave de objeto a ser usada no cabeçalho `Location` que é retornado na resposta.  Se um dos irmãos for fornecido, `ReplaceKeyWith` não será obrigatório. Poderá ser fornecido somente se `ReplaceKeyPrefixWith` não for fornecido.  | 
| HttpRedirectCode |  O código de redirecionamento HTTP a ser usado no cabeçalho `Location` que é retornado na resposta. Se um dos irmãos for fornecido, `HttpRedirectCode` não será obrigatório.  | 

#### Exemplos de regras de redirecionamento
<a name="redirect-rule-examples"></a>

Os seguintes exemplos explicam tarefas comuns de redirecionamento:

**Importante**  
Para criar regras de redirecionamento no novo console do Amazon S3, você deve usar o JSON.

**Example 1: redirecionar depois de trocar o nome de um prefixo de chave**  
Suponha que seu bucket contenha os seguintes objetos:  
+ index.html
+ docs/article1.html
+ docs/article2.html
Você decide renomear a pasta de `docs/` para `documents/`. Depois de fazer essa alteração, você precisará redirecionar as solicitações do prefixo `docs/` para `documents/`. Por exemplo, as solicitações para `docs/article1.html` serão redirecionadas para `documents/article1.html`.  
Nesse caso, adicione a seguinte regra de roteamento à configuração do site:  

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

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

**Example 2: redirecionar solicitações de uma pasta excluída para uma página**  
Suponha que você tenha excluído a pasta `images/` (ou seja, você excluiu todos os objetos com o prefixo de chave `images/`). Você pode adicionar uma regra de roteamento que redirecione as solicitações para os objetos com o prefixo de chave `images/` a uma página chamada `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: redirecionar para outro domínio com um caminho específico**  
Suponha que você queira redirecionar solicitações de um caminho específico para outro domínio. Por exemplo, você deseja redirecionar solicitações de `/redirect/me` para `https://example.com/new/path`.  
Ao usar `HostName` e `ReplaceKeyWith` em conjunto, o Amazon S3 constrói o URL de redirecionamento concatenando o nome do host e a chave de substituição com uma barra entre eles. Portanto, você não deve incluir uma barra inicial no valor `ReplaceKeyWith`. O Amazon S3 adiciona automaticamente a barra entre o nome do host e a chave de substituição.  

```
[
    {
        "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>
```
Essa configuração redireciona uma solicitação para `https://yourbucket.s3-website-region.amazonaws.com/redirect/me` para `https://example.com/new/path`. Observe que `ReplaceKeyWith` está definido como `new/path` sem uma barra inicial.

**Example 4: redirecionar para um erro HTTP**  
Suponha que, quando um objeto solicitado não for encontrado, você queira redirecionar solicitações para uma instância do Amazon Elastic Compute Cloud (Amazon EC2). Adicione uma regra de redirecionamento para que, quando um código HTTP de status 404 (não encontrado) for retornado, o visitante do site seja redirecionado para uma instância do Amazon EC2 que processa a solicitação.   
O exemplo a seguir também insere o prefixo de chave de objeto `report-404/` no redirecionamento. Por exemplo, se você solicitar uma página `ExamplePage.html` e ela resultar em um erro HTTP 404, a solicitação será redirecionada a uma página `report-404/ExamplePage.html` na instância do Amazon EC2 especificada. Se não houver nenhuma regra de roteamento e o erro HTTP 404 ocorrer, o documento de erro que é especificado na configuração será retornado.  

```
[
    {
        "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>
```

## Redirecionar solicitações para um objeto
<a name="redirect-requests-object-metadata"></a>

Você pode redirecionar solicitações de um objeto para outro objeto ou URL configurando o local de redirecionamento do site nos metadados do objeto. Você define o redirecionamento adicionando a propriedade `x-amz-website-redirect-location` aos metadados do objeto. Você pode usar o console do Amazon S3 para definir o **Website Redirect Location (Local de redirecionamento de site)** nos metadados do objeto. Se você usar a [API do Amazon S3](#page-redirect-using-rest-api), defina `x-amz-website-redirect-location`. A seguir, o site interpreta o objeto como um redirecionamento 301. 

Para reorientar uma solicitação para outro objeto, você define o local de redirecionamento como a chave do objeto de destino. Para redirecionar uma solicitação para um URL externo, defina o local de redirecionamento como o URL desejado. Para obter mais informações sobre metadados de objeto, consulte [Metadados do objeto definidos pelo sistema](UsingMetadata.md#SysMetadata).

Quando você define um redirecionamento de página, pode manter ou excluir o conteúdo de objeto de origem. Por exemplo, se você tiver um objeto `page1.html` em seu bucket, poderá redirecionar todas as solicitações para essa página para outro objeto, `page2.html`. Você tem duas opções:
+ Mantenha o conteúdo do objeto do `page1.html` e redirecione solicitações de página.
+ Exclua o conteúdo de `page1.html` e carregue um objeto de byte zero chamado `page1.html` para substituir o objeto existente e redirecionar solicitações de páginas. 

### Uso do console do S3
<a name="page-redirect-using-console"></a>

1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Na lista **Buckets**, escolha o nome do bucket que você configurou como um site estático (por exemplo, `example.com`).

1. Em **Objects (Objetos)**, selecione seu objeto.

1. Escolha **Actions (Ações)** e escolha **Edit metadata (Editar metadados)**.

1. Escolha **Metadata (Metadados)**.

1. Escolha **Add Metadata (Adicionar metadados)**.

1. Em **Type (Tipo)**, escolha **System Defined (Definido pelo sistema)**.

1. Em **Key (Chave)**, escolha **x-amz-website-redirect-location**.

1. Em **Value (Valor)**, insira o nome da chave do objeto o qual deseja redirecionar, por exemplo, `/page2.html`.

   Para outro objeto no mesmo bucket, o prefixo `/` no valor é obrigatório. Você também pode definir o valor para um URL externo, por exemplo, `http://www.example.com`.

1. Escolha **Edit metadata (Editar metadados)**.

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

As ações da API do Amazon S3 oferecem suporte ao cabeçalho `x-amz-website-redirect-location` na solicitação. O Amazon S3 armazena o valor de cabeçalho nos metadados de objeto como `x-amz-website-redirect-location`. 
+ [Objeto PUT](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [Iniciar multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)
+ [Objeto POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Objeto PUT - Copiar](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)

Um bucket configurado para hospedagem de sites tem o endpoint de site e o endpoint REST. Uma solicitação para uma página que é configurada como redirecionamento 301 tem os seguintes resultados possíveis, dependendo do endpoint da solicitação:
+ **Endpoint de site específico da região: **o Amazon S3 redireciona a solicitação da página de acordo com o valor da propriedade `x-amz-website-redirect-location`. 
+ **Endpoint REST: **o Amazon S3 não redireciona a solicitação da página. Ele retorna o objeto solicitado.

Para obter mais informações sobre os endpoints, consulte [Principais diferenças entre um endpoint de site e um endpoint de API REST](WebsiteEndpoints.md#WebsiteRestEndpointDiff).

Quando você define um redirecionamento de página, pode manter ou excluir o conteúdo de objeto. Por exemplo, suponha que você tenha um objeto `page1.html` em seu bucket.
+ Para manter o conteúdo de `page1.html` e apenas redirecionar as solicitações de página, envie uma solicitação [PUT objeto - Copiar](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html) para criar um novo objeto `page1.html`que usa o objeto `page1.html` existente como origem. Na sua solicitação, você define o cabeçalho `x-amz-website-redirect-location`. Quando a solicitação for concluída, você terá a página original com o conteúdo inalterado, mas o Amazon S3 redirecionará todas as solicitações da página para o local de redirecionamento especificado.
+ Para excluir o conteúdo do objeto `page1.html` e redirecionar as solicitações para a página, envie uma solicitação PUT objeto para fazer upload de um objeto com zero byte com a mesma chave de objeto: `page1.html`. Na solicitação PUT, você define `x-amz-website-redirect-location` para `page1.html`como o novo objeto. Quando a solicitação for concluída, `page1.html` não terá nenhum conteúdo, e as solicitações serão redirecionadas para o local que é especificado por `x-amz-website-redirect-location`.

Quando você recupera o objeto usando a ação [GET objeto](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html) com outros metadados de objeto, o Amazon S3 retorna o cabeçalho `x-amz-website-redirect-location` na resposta.