Arquivo de Tags: mod_rewrite

Problema:

Você possui diversos domínios hospedados em um servidor Apache e deseja que todos eles sejam redirecionados para um outro domínio.

Solução:

Utilizar o mod_rewrite do apache com as seguintes condições e regra:

RewriteCond %{HTTP_HOST} ^dominio1.com(.*)      [OR]
RewriteCond %{HTTP_HOST} ^www.dominio1.com(.*)  [OR]
RewriteCond %{HTTP_HOST} ^outrodominio.com(.*)  [OR]
RewriteCond %{HTTP_HOST} ^paraquetantodominio.com(.*)
RewriteRule ^/(.*) http://www.dominioprincipal.com/$1   [L,R=301]

Notas:

  • Os domínios dominio1.com, www.dominio1.com, outrodominio.com e paraquetantodominio.com devem estar configurados em ServerAlias
  • O (.*) é uma expressão regular (ER) que funciona como um coringa: deste ponto em diante a URL pode possuir qualquer seqüência de caracteres e ainda assim a condição será válida.
  • O $1 na linha RewriteRule diz ao Apache para completar o caminho do domínio.  Na verdade ele copia os caracteres que foram substituidos pela expressão regular  (.*) que está em ^/(.*) para frente do novo caminho.
  • O [L,R=301] significa:
    L : Não execute outra regra, esta é a última
    R=301 : Retorne ao usuário o código de status HTTP 301 (Moved Permanently).  Outros códigos HTTP e mais informações podem ser encontrados aqui. Se você utilizar apenas R o código que será enviado será o 302 (Moved Temporarily).
  • Recomendo a leitura da página da Apache sobre o mod_rewrite.