# Como funciona o redirecionamento de URL?

Existem muitas formas de se realizar um redirecionamento de domínio ou [subdomínio](https://www.ionos.com/pt-br/digitalguide/dominios/domainverwaltung/o-que-e-um-subdominio/) para outra seção do seu site ou para um outro endereço. Redirecionamentos costumam ser realizados por **.htaccess**, **script PHP**, **meta tags HTML** e por **JavaScript**.

## Para que redirecionamentos de URL são usados?

Redirecionamentos de domínio são usados para informar servidores que o conteúdo de um site foi movido de um URL para outro. O passo é necessário quando, por exemplo, o endereço de destino de um link já foi salvo no computador de um usuário ou poderia ocupar uma posição de destaque nos resultados dos mecanismos de busca (SERPs). Nestes casos, o redirecionamento informa ao navegador ou *crawler* que o conteúdo foi movido e apresenta o link para o novo endereço. Sem que um redirecionamento seja configurado, visitantes podem se deparar com uma página de erro 404 no lugar do conteúdo que estavam procurando.

Principalmente sites comerciais precisam evitar que esse tipo de situação ocorra. Lojas virtuais que oferecem diversos produtos, por exemplo, configuram redirecionamentos constantemente, pois realizam mudanças com frequência. Assim, quando um item não está mais disponível, potenciais clientes são encaminhados a uma página com produtos similares. Redirecionamentos de URL permitem que comércios eletrônicos **direcionem o fluxo de visitantes** de forma eficaz, minimizando taxas de rejeição.

Ao configurar um redirecionamento de URL, você consegue disponibilizar o mesmo conteúdo em endereços diferentes. Todos estes endereços alternativos são meros redirecionamentos ao domínio desejado, que passa a independer de um URL ou de um caminho específico.

## Que tipos de redirecionamento de URL existem?

Redirecionamentos são geralmente divididos em redirecionamentos pelo lado do cliente e redirecionamentos pelo lado do servidor. No **redirecionamento de domínio pelo lado do servidor**, códigos de status HTTP são transferidos para agentes de usuário (navegadores ou *crawlers*), o que não ocorre em **redirecionamentos pelo lado do cliente**. Estes são realizados sem a necessidade de qualquer resposta, o que significa que nenhum código de status é emitido. Por isso, essa segunda opção nem sempre é suportada por todos os agentes de usuário, o que pode resultar em situações inconvenientes, como visitantes permanecendo na página original, não sendo devidamente encaminhados. Problemas como este fazem com que redirecionamentos pelo lado do servidor sejam mais comuns. Recomendamos que soluções pelo lado do cliente só sejam utilizadas quando a opção de redirecionamento de domínio pelo lado do servidor tiver de ser descartada, por motivos técnicos.

Existe também o redirecionamento de URL chamado de transparente ou invisível. Neste tipo de redirecionamento, o URL não muda. No redirecionamento de domínio com mascaramento, por exemplo, o URL exibido ao usuário não é alterado, mesmo que ele tenha sido encaminhado a outro domínio ou que o conteúdo de outra página seja exibido. No entanto, este tipo de redirecionamento pode resultar em dificuldades de indexação e de exibição do URL pelo navegador. Por isso, não recomendamos seu uso, a não ser que limitações o tornem a única opção possível.

Dica Interessado no passo a passo para configurar um redirecionamento de domínio? Aprenda, com [este artigo do IONOS Help Center](https://www.ionos.com/help/domains/forwarding-a-domain/forwarding-a-domain-to-a-different-domain/ "Redirecionar um domínio para um domínio diferente — IONOS Help"), como redirecionar um domínio para outro site.

## Redirecionamentos pelo lado do servidor

Na maioria dos casos, redirecionamentos de URL são realizados usando-se o arquivo de configuração ***.htaccess***ou um**script PHP**. Ambos os métodos possibilitam a definição individual do código de status HTTP a ser exibido para o agente de usuário. Isso permite que administradores de sites apontem o redirecionamento de domínio como permanente ou temporário. Os**códigos de status HTTP** 301 e 302 são usados nessas situações.

- **301: Movido permanentemente (*Moved permanently*)**: O recurso solicitado passa a ficar permanentemente disponível no URL de redirecionamento, tornando o antigo URL inválido. Para configurá-lo é preciso fazer um *redirect 301*.
- **302: Movido temporariamente (*Moved temporarily*)**: O recurso solicitado também passa a ficar disponível no URL de redirecionamento, mas, ao contrário do que ocorre no *redirect 301*, o URL original continua válido.

Se o status HTTP não for definido por você de forma explícita, o servidor web configurará automaticamente o código 302 ao realizar um redirecionamento pelo lado do servidor. Por isso, o melhor a se fazer é inserir manualmente o código de status desejado em cada redirecionamento, reduzindo as chances de que **erros de indexação**, como [URL hijacking](https://www.ionos.com/pt-br/digitalguide/dominios/administracao-de-dominios/o-que-e-url-hijacking/), ocorram. Ao contrário do *redirect 301*, o código de status 302 informa aos *crawlers* que o URL original deve continuar sendo indexado. Contudo, caso a mudança seja permanente, o endereço que contém o redirecionamento competirá com a página de destino oficial na indexação dos mecanismos de busca.

### *Redirect .htaccess*

O *.htaccess* é um **arquivo de configuração** presente em servidores web Apache. Ele é usado para a definição de configurações centrais a nível de diretórios. O arquivo permite que administradores de sites efetuem alterações especificas em diretórios de domínios e respectivos subdiretórios. Uma das funções do *.htaccess* é redirecionar domínios de endereços individuais para outras URLs, pelo lado do servidor.

Você pode configurar um redirecionamento de URL alterando o código do arquivo *.htaccess*. Caso este arquivo seja adicionado ao diretório principal juntamente com o trecho abaixo, solicitações de acesso ao domínio oficial serão redirecionadas, pelo lado do servidor, ao domínio `www.exemplo.com`:

```apacheconf
Redirect 301 / http://www.exemplo.com/
```

A linha de código em questão deve começar com `Redirect 301`, por determinar o código de status HTTP que o servidor deve emitir. Em seguida, o caminho para o conteúdo redirecionado é apresentado — no nosso exemplo, todo o conteúdo foi redirecionado. O último passo é informar o URL de destino completo do redirecionamento ao agente de usuário (`http://www.exemplo.com`).

Este método também permite redirecionar arquivos individuais. O código abaixo exemplifica um *redirect .htaccess* do tipo, de um site para outro:

```apacheconf
Redirect 301 /directory/documento-de-exemplo.html http://www.exemplo.com/exemplo.html
```

Depois de inserir o código de status HTTP 301, o caminho do diretório do arquivo que será permanentemente redirecionado (`/diretorio/documento-de-exemplo.html`) e o URL do redirecionamento (`http://www.exemplo.com/exemplo.html`) devem ser adicionados.

O redirecionamento permanente ficaria assim em um servidor Apache com o **módulo *mod\_rewrite*** ativo:

```apacheconf
RewriteEngine On
RewriteRule ^directory/documento-de-exemplo.html$ http://www.exemplo.com/exemplo.html [L,R=301]
```

Na primeira linha do código, o módulo *mod\_rewrite* do servidor web Apache é acionado com o comando `RewriteEngine On`. Em seguida, a `RewriteRule` define o caminho do arquivo de redirecionamento e o endereço de destino. O circunflexo (`^`) e o cifrão (`$`) sinalizam o início e o fim do caminho, respectivamente, enquanto a letra `L` indica a última regra *mod\_rewrite* para a solicitação. `R=301` representa o status HTTP 301.

Dica Acesse nosso artigo especializado em macetes .htaccess. Fizemos uma seleção especial para você. Ainda, aprenda mais sobre mecanismos de reescrita no nosso Digital Guide.

Esteja ciente que, ao configurar um redirecionamento de domínio por *.htaccess*, entradas incorretas resultarão em **consequências graves** na operação do site. Como tais alterações entram imediatamente em vigor após serem salvas no arquivo *.htaccess*, elas devem ser, sempre, cuidadosamente testadas.

### Redirecionamentos PHP

Alterar o arquivo *.htaccess* não é a única forma de se criar um redirecionamento de URL. Ele também pode ser realizado por script PHP (por exemplo, pelo arquivo *index.php*). O código abaixo exemplifica um redirecionamento permanente para o URL de destino fictício `www.exemplo.com`:

```php
<?php
header("Status: 301 Moved Permanently");
header("Location: http://www.exemplo.com");
exit;
?>
```

Ao configurar um redirecionamento usando um script PHP, defina o código de status HTTP na função `header`, presente na segunda linha do código — no nosso exemplo criamos um *redirect 301* permanente. Sabendo que redirecionamentos pelo lado do servidor são **executados temporariamente** por padrão, é preciso que você dê instruções claras ao configurar redirecionamentos permanentes, adicionando o código de status 301. Em redirecionamentos permanentes, o domínio de destino do redirecionamento também deve ser registrado no `header`. No nosso exemplo, o redirecionamento leva ao endereço `http://www.exemplo.com`. A função `exit`, na linha 4, finaliza o script e previne que a linha posterior seja executada. Para que redirecionamentos por PHP funcionem, o bloco de código deve ser posicionado no início da página HTML, o que impedirá o servidor de transferir conteúdo HTML à página de redirecionamento.

## Redirecionamentos pelo lado do cliente

Se não for possível configurar um redirecionamento de domínio pelo lado do servidor, por questões técnicas, administradores de sites podem tentar fazê-lo pelo lado do cliente. Tanto a **meta tag HTML `refresh` quanto o JavaScript** podem ser usados para essa finalidade. A grande desvantagem de redirecionamentos pelo lado do cliente é a seguinte: servidores não entregam os códigos de status HTTP aos navegadores ou *crawlers* que realizam a solicitação, o que significa que eles não são informados explicitamente sobre a duração do redirecionamento. Além disso, redirecionamentos pelo lado do cliente não são suportados por todos os agentes de usuário. Assim, existe o risco de nem todos os visitantes serem redirecionados à página correta.

Redirecionamentos pelo lado do cliente podem impactar negativamente a indexação de um site pelos mecanismos de busca. A exclusão explícita da indexação, causada pelo código de status HTTP 301, não ocorre em redirecionamentos configurados pelo lado do cliente. Isso pode fazer com que os dois domínios envolvidos no redirecionamento concorram entre si, afetando o posicionamento em resultados de pesquisa. Ainda, ao contrário de redirecionamentos pelo lado do servidor, que permanecem invisíveis aos usuários, redirecionamentos pelo lado do cliente podem resultar em **atrasos** perceptivos pelos visitantes.

### Redirecionar domínio por *meta redirect*

Chamado de *meta redirect*, um redirecionamento pela meta tag HTML *refresh* pode ser implementado pelo atributo `http-equiv`. Para utilizar este método, você só precisa de um arquivo HTML e da tag correspondente no cabeçalho. Ainda, para informar seus visitantes sobre o redirecionamento, será preciso que você configure uma notificação no documento HTML, como, por exemplo, **“Aguarde, você está sendo redirecionado”**. Um redirecionamento de domínio simples, por *meta redirect*, pode ser estabelecido com o seguinte código:

```html
<meta http-equiv="refresh" content="10; url=http://www.exemplo.com/">
```

O cliente recebe uma solicitação, por meio da meta tag `http-equiv="refresh"`, para redirecionar o domínio. A forma como isso acontece é definida pelo atributo `content`. No nosso exemplo, o redirecionamento encaminha usuários ao endereço de destino `www.exemplo.com` após dez segundos.

### Redirecionamentos por JavaScript

O JavaScript é uma alternativa simples de se criar redirecionamentos de domínio pelo lado do cliente. No entanto, assim como ocorre em *meta redirects*, redirecionamentos por JavaScript só devem ser usados em casos específicos, pois esta linguagem **não é suportada por todos os navegadores**, por questões de segurança. O JavaScript também pode gerar problemas para *crawlers* e usuários que utilizam extensões *NoScript* no navegador. O código para se criar um redirecionamento de URL por JavaScript é o seguinte:

```html
<script> 
window.location.replace('http://www.exemplo.com'); 
</script>
```

A segunda linha do código é a mais importante. No nosso exemplo, o objeto `window.location` é usado como referência ao endereço atual. Já o comando `replace` instrui o navegador a direcionar o usuário ao domínio de destino entre parênteses (`www.exemplo.com`).


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/dominios/administracao-de-dominios/conceitos-basicos-sobre-redirecionamento-de-url/](https://www.ionos.com/pt-br/digitalguide/dominios/administracao-de-dominios/conceitos-basicos-sobre-redirecionamento-de-url/) for AI/LLM consumption.