Redirecionamento via htaccess (WordPress, 301, 302, SSL, etc)
Fazer redirecionamento via htaccess pode ser uma dor de cabeça para quem está começando a entender o que é o arquivo e como ele funciona. Um simples erro e o site fica fora do ar.
Neste artigo, eu preparei uma série de exemplos de redirecionamentos usando o arquivo .htaccess e a explicação de cada linha de código. Tudo para você não errar na hora de começar seus redirecionamentos.
Video: Como Criar Um Redirecionamento no htaccess
Eu já tenho um vídeo explicando o que é o arquivo .htaccess do Apache e como ele funciona. Recomendo que você assista esse conteúdo antes de prosseguir. Você não vai obter o redirecionamento desejado caso não compreenda o que é o arquivo.
Um redirecionamento é simplesmente encaminhar um determinado endereço para outro. Pode ser um domínio antigo para um novo. Apenas uma página, um subdomínio ou diretório. Depende do que você precisa.
Quando a pessoa acessar um endereço que tenha um redirecionamento, o navegador irá entender o comando e processar a requisição, ou seja, redirecionar o usuário para o novo link (endereço).
Todo servidor é compatível com redirecionamentos?
A maioria! Mas, para os redirecionamentos que vou ensinar a seguir, o servidor precisa ser o Apache e ter o mod_rewrite instalado. Praticamente todos os provedores oferecem o recurso, uma vez que é muito utilizado. Caso você não saiba dessa disponibilidade no seu plano, contate o suporte do seu provedor.
PS: No iConectado Host, todos os planos possuem o mod_rewrite instalado.
Flags e Símbolos do Mod Rewrite
Os flags modificam as regras do rewrite (RewriteRule). Confira abaixo quatro exemplos que ajudarão você a compreender os códigos que usaremos:
[F]: Significa Forbidden, fazem o servidor retornar um erro 403 Forbidden;
[L]: Significa Last, significam que se aquela condição for válida as condições abaixo não serão processadas;
[R]: Significa Redirect, é responsável por redirecionar o site para a URL especificada;
[NC]: Significa no case-sensitive, ou seja, meusite.com é igual a MEUSITE.COM.
Além dos flags, temos os símbolos:
^ significa início da string;
^(.*)$ significa quaisquer caracteres. Este símbolo irá substituir o valor por outro, na hora que for recebida a requisição. Exemplo: meusite.com/$1 poderá ser meusite.com/qualquer-pagina/.
Agora que você já sabe o que é o arquivo do Apache, seus flags e símbolos, está na hora de começar. Vamos ver abaixo os exemplos de redirecionamento via htaccess:
O comando abaixo irá redirecionar todo o acesso do endereço http://meusite.com/ para https://meusite.com
# Redireciona de http para https
Obs.: É necessário ter um certificado SSL válido e instalado no domínio para que o redirecionamento funcione corretamente. Recomendo desativar plugins de redirecionamento de SSL no WordPress. Pode causar loops e tirar o site do ar.
Redirecionamento de URL com ou sem o WWW
Abaixo, você terá dois códigos, use apenas 1, para redirecionar o seu domínio e garantir que todos possam acessar, usando o www. ou sem.
Redirecionamento sem WWW para com WWW
O comando a seguir irá redirecionar o seu endereço meusite.com para www.meusite.com
# Redireciona domínio sem o www para endereço com o www
RewriteRule ^(.*)$ http://www.meusite.com/$1 [L,R=301]
Redirecionamento com WWW para sem WWW
O comando abaixo irá redirecionar o seu endereço www.meusite.com para meusite.com
# Redireciona domínio com o www para endereço sem o www
RewriteCond %{HTTP_HOST} ^www.meusite.com [NC]
Redirecionamento de Domínio para Subdomínio
O código abaixo redireciona o seu domínio para um subdomínio. Exemplo: meusite.com para subdominio.meusite.com.
# Redireciona Domínio para um Subdomínio
RewriteRule ^(.*)$ http://subdominio.meusite.com/$1 [L,R=301]
O código abaixo redireciona o seu Subdomínio para um Domínio. Exemplo: blog.meusite.com para meusite.com.
# Redireciona Subdomínio para um Domínio
RewriteCond %{HTTP_HOST} ^subdominio.meusite.com [NC]
Redirecionar domínio para outro
O comando abaixo faz o redirecionamento de um domínio para outro. Este é o código que você deve usar quando quer passar a autoridade do domínio antigo para o novo.
# Redireciona domínio antigo para novo domínio
RewriteCond %{HTTP_HOST} ^meuantigosite.com [NC]
RewriteRule ^(.*)$ http://meunovosite.com/$1 [L,R=301]
Observações sobre os redirecionamentos
Você teve acesso a diversos códigos para fazer o redirecionamento via htaccess, mas antes de sair por ai copiando e colando os códigos, peço que siga essas dicas e observações:
Substitua o nome meusite.com pelo endereço real do seu domínio e depois insira o código no .htaccess;
Respeite o uso de maiúsculas e minúsculas no código;
Sempre que fazer um redirecionamento, limpe completamente o cache do seu navegador para fazer testes. Em alguns casos o redirecionamento está correto, mas não funciona devido ao histórico do browser.
Use o código 301 quando você não pretende mudar o redirecionamento e o 302 quando você planeja desfazer o redirecionamento em breve.
Verifique os códigos que você já possui no .htaccess antes de inserir novos. Pode ser que o código já exista.
Não faça redirecionamentos conflitantes. Exemplo: Redirecionar um Domínio para Subdomínio e depois querer devolver a visita par ao meu endereço. O navegador irá acusar loop de redirecionamento e o site sairá do ar.
Agora você já sabe fazer um redirecionamento via htaccess. Este recurso é a melhor opção para você encaminhar uma visita para outro endereço, pois o redirecionamento é feito a nível de servidor.
Sempre que existir a possibilidade, use o .htaccess para redirecionar seus endereços. Evite o uso de plugins para o WordPress, ou até mesmo redirecionamento usando PHP, ASP ou HTML.