Introdução
O redirecionamento HTTP é uma maneira de apontar um domínio ou endereço para outro. Existem alguns tipos diferentes de redirecionamentos, cada um com um significado diferente para o navegador do cliente. Os dois tipos mais comuns são os redirecionamentos temporários e os redirecionamentos permanentes.
Redirecionamentos temporários (código de status de resposta 302 Encontrado) são úteis se um URL precisar ser temporariamente servido de um local diferente. Por exemplo, se você estiver realizando manutenção no site, pode desejar usar um redirecionamento temporário do seu domínio para uma página de explicação para informar seus visitantes que você estará de volta em breve.
Redirecionamentos permanentes (código de status de resposta 301 Movido Permanentemente), por outro lado, informam ao navegador que ele deve esquecer completamente o endereço antigo e não tentar acessá-lo mais. Estes são úteis quando seu conteúdo foi permanentemente movido para um novo local, como quando você muda de nome de domínio.
Este guia abordará uma explicação mais detalhada de como implementar cada tipo de redirecionamento no Nginx e passará por alguns exemplos para casos de uso específicos.
Pré-requisitos
Para seguir este tutorial, você precisará:
- A server with Nginx installed and set up to serve your website(s). You can find some examples and instructions on the tutorials for Ubuntu 22.04, Debian, or CentOS.
Solução em Resumo
No Nginx, você pode realizar a maioria dos redirecionamentos com a diretiva embutida rewrite
. Esta diretiva está disponível por padrão em uma instalação nova do Nginx e pode ser usada para criar redirecionamentos temporários e permanentes. Em sua forma mais simples, ela recebe pelo menos dois argumentos: o URL antigo e o novo URL.
Você pode implementar um redirecionamento temporário com as seguintes linhas na configuração do seu servidor:
Este redirecionamento instrui o navegador a direcionar todas as solicitações para www.domain1.com
para www.domain2.com
. Esta solução, no entanto, funciona apenas para uma única página, não para o site inteiro. Para redirecionar mais do que uma única página, você pode usar a diretiva rewrite
com expressões regulares para especificar diretórios inteiros em vez de apenas arquivos individuais.
redirect
corresponde a padrões de expressão regular entre parênteses. Em seguida, ele faz referência ao texto correspondido no destino do redirecionamento usando a expressão $1
, onde 1
é o primeiro grupo de texto correspondido. Em exemplos mais complexos, grupos correspondidos subsequentes são numerados sequencialmente.
Por exemplo, se você quiser redirecionar temporariamente todas as páginas dentro de www.domain1.com
para www.domain2.com
, você poderia usar o seguinte:
Por padrão, a diretiva rewrite
estabelece um redirecionamento temporário. Se você deseja criar um redirecionamento permanente, pode fazer isso substituindo redirect
por permanent
no final da diretiva, assim:
Vamos avançar para alguns exemplos específicos.
Exemplo 1 — Mudando para um Domínio Diferente
Se você estabeleceu uma presença na web e gostaria de mudar seu domínio para um novo endereço, é melhor não abandonar seu domínio antigo. Favoritos para seu site e links para seu site localizados em outras páginas da internet serão quebrados se seu conteúdo desaparecer sem nenhuma instrução para o navegador sobre como encontrar sua nova localização. Mudar de domínio sem redirecionamento fará com que seu site perca tráfego de visitantes anteriores e links mais antigos.
Neste exemplo, configuraremos um redirecionamento do antigo domínio chamado dominio1.com
para o novo chamado dominio2.com
. Usaremos redirecionamentos permanentes aqui porque o domínio antigo será descontinuado, e todo o tráfego deve ir para o novo domínio a partir de agora.
Vamos assumir que você tenha seu site configurado para ser servido a partir de um único domínio chamado dominio1.com
já configurado no Nginx da seguinte forma:
Também assumiremos que você já está servindo a versão futura do seu site em dominio2.com
:
Vamos alterar o arquivo de configuração do bloco do servidor domain1.com
para adicionar um redirecionamento permanente para domain2.com
:
Adicionamos o redirecionamento mencionado usando uma diretiva rewrite
. A expressão regular ^/(.*)$
corresponde a tudo após a /
na URL. Por exemplo, http://domain1.com/index.html
será redirecionado para http://domain2.com/index.html
. Para obter o redirecionamento permanente, simplesmente adicionamos permanent
após a diretiva rewrite
.
Nota: Lembre-se de testar sua configuração usando nginx -t
e então reinicie o Nginx após fazer suas alterações.
Exemplo 2 — Criando uma Experiência Persistente Apesar de Mudanças de Nome em Páginas Únicas
Às vezes, é necessário alterar os nomes de páginas individuais que já foram publicadas e receberam tráfego em seu site. Apenas mudar o nome causaria um erro 404 Not Found para os visitantes tentando acessar a URL original, mas você pode evitar isso usando um redirecionamento. Isso garante que pessoas que marcaram suas páginas antigas ou as encontraram através de links desatualizados em mecanismos de busca ainda cheguem à página correta.
Vamos supor que o seu site tinha duas páginas separadas para produtos e serviços chamadas products.html
e services.html
, respectivamente. Agora, você decidiu substituir essas duas páginas por uma única página de ofertas chamada offers.html
em vez disso. Vamos configurar um redirecionamento simples para products.html
e services.html
para offers.html
.
Nós assumimos que o seu site está configurado da seguinte forma:
Configurar os redirecionamentos é tão simples quanto usar duas diretivas de redirecionamento.
A diretiva rewrite
aceita o endereço original que deve ser redirecionado, bem como o endereço de destino de uma nova página. Como a mudança aqui não é temporária, usamos permanent
na diretiva também. Você pode usar quantos redirecionamentos como este desejar para garantir que seus visitantes não vejam erros 404 Not Found desnecessários ao mover o conteúdo do site.
Conclusão
Agora você tem o conhecimento para redirecionar solicitações para novos locais. Certifique-se de usar o tipo de redirecionamento correto, pois o uso impróprio de redirecionamentos temporários pode prejudicar o seu ranking de busca.
Há múltiplos outros usos de redirecionamentos HTTP, incluindo forçar conexões SSL seguras (ou seja, usando https
em vez de http
) e garantir que todos os visitantes acabem apenas no endereço prefixado com www.
do site.
Usar redirecionamentos corretamente permitirá que você alavanque sua presença na web atual enquanto lhe dá a capacidade de modificar a estrutura do seu site conforme necessário. Se você gostaria de aprender mais sobre as maneiras de redirecionar seus visitantes, o Nginx tem uma ótima documentação sobre o assunto nas seções do módulo de reescrita da documentação oficial e postagem oficial no blog sobre criação de redirecionamentos.