(Opcional) Configurar um redirecionamento de uma página da Web - Amazon Simple Storage Service

(Opcional) Configurar um redirecionamento de uma página da Web

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.

Redirecionar solicitações para o endpoint do site do seu bucket para outro bucket ou domínio

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

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

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

  3. Escolha Properties (Propriedades).

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

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

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

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

  8. Selecione Save changes.

Configurar regras de redirecionamento para usar redirecionamentos condicionais avançados

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.

Para obter mais informações sobre como configurar regras de roteamento usando a API REST, consulte PutBucketWebsite 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.

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

  2. Na lista Bucket, escolha o nome do bucket configurado como um site estático.

  3. Escolha Properties (Propriedades).

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

  5. 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. O Amazon S3 tem uma limitação de 50 regras de roteamento por configuração de site.

  6. Selecione Save changes.

Elementos de regra de roteamento

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.

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:

  • Um contêiner RoutingRules deve ter pelo menos uma regra de roteamento.

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

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.

exemplo 1: Redirecionar após 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:

JSON
[ { "Condition": { "KeyPrefixEquals": "docs/" }, "Redirect": { "ReplaceKeyPrefixWith": "documents/" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>docs/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>
exemplo 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.

JSON
[ { "Condition": { "KeyPrefixEquals": "images/" }, "Redirect": { "ReplaceKeyWith": "folderdeleted.html" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>images/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith> </Redirect> </RoutingRule> </RoutingRules>
exemplo 3: 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.

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>

Redirecionar solicitações para um objeto

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

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.

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

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

  3. Em Objects (Objetos), selecione seu objeto.

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

  5. Escolha Metadata (Metadados).

  6. Escolha Add Metadata (Adicionar metadados).

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

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

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

  10. Escolha Edit metadata (Editar metadados).

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.

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.

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 para criar um novo objeto page1.htmlque 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.htmlcomo 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 com outros metadados de objeto, o Amazon S3 retorna o cabeçalho x-amz-website-redirect-location na resposta.