Português do Brasil English
Devin no Facebook  Devin no Twitter  RSS do Site 
Servidores    

Apache: Redirecionando domínios antigos para novos


Comentários  4
Visualizações  
21,617

Às vezes queremos redirecionar antigos endereços para novos. Por exemplo, a antiga Página do Eitch tinha todas as suas URLs dentro do subdiretório /eitch/_pagina_, e agora está tudo na raiz. Como eu poderia fazer com que todos os links antigos continuassem a funcionar, agora com a nova URL? No Apache, podemos utilizar o mod_rewrite para fazer isso.

Para ilustrar essa dica, vamos supor que tínhamos o endereço:

  • http://www.minha-empresa-radical.com.br

E de repente mudei o nome da empresa e com isso o domínio, para:

  • http://www.radical-enterprises.com

Ao invés de manter as páginas em duas URLs, por que não deixar somente na última? Para fazer isto, você precisará manter os dois domínios separados por configurações de domínios virtuais.

No domínio virtual www.minha-empresa-radical.com.br, deixe o diretório das páginas vazio, enquanto que no domínio virtual www.radical-enterprises.com, deixe todas as páginas normalmente.

Agora vem o truque do mod_rewrite. Dentro do domínio virtual www.minha-empresa-radical.com.br (que está vazio), crie um arquivo .htaccess com o seguinte conteúdo:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.radical-enterprises.com/$1 [R]

Aviso: Lembre-se que o .htaccess tem que estar liberado para uso no Apache. Para saber mais sobre o htaccess, consulte este tutorial.

Estas linhas fazem com que qualquer arquivo que seja requisitado no domínio virtual www.minha-empresa-radical.com.br seja automaticamente redirecionado para o outro domínio. Exemplos:

Usuário acessa: http://www.minha-empresa-radical.com.br
Cai em: http://www.radical-enterprises.com.br

Usuário acessa: http://www.minha-empresa-radical.com.br/conteudo/noticia-legal
Cai em: http://www.radical-enterprises.com.br/conteudo/noticia-legal

Ou seja, os caminhos das URLs também são “traduzidos” automaticamente.

Nota: As duas linhas de “RewriteCond” do .htaccess fazem com que este redirecionamento só ocorra quando não houver nenhum arquivo ou diretório existente com o nome da URL. Como o domínio virtual está vazio, as URLs sempre vão ser redirecionadas.

Como eu disse anteriormente, tive que redirecionar todo o conteúdo do diretório /eitch para a raiz. Neste caso, utilizei um .htaccess como este:

RewriteEngine   on
RewriteCond     %{REQUEST_URI}  ^/eitch/(.*)
RewriteRule     ^(.*)$ /$1 [R]

Neste caso, ele redireciona apenas todo o conteúdo do diretório /eitch para a raiz. Exemplos:

Usuário acessa: http://www.devin.com.br/eitch/vcd/
Cai em: http://www.devin.com.br/eitch/vcd/

Usuário acessa: http://www.devin.com.br/eitch/htaccess/
Cai em: http://www.devin.com.br/eitch/htaccess/

Usuário acessa: http://www.devin.com.br/outros/artigo/
Cai em: http://www.devin.com.br/outros/artigo/
(
Não entra no redirecionamento)

Bom proveito!


Comentários  4
Visualizações  
21,617


TagsLeia também

Apaixonado por Linux e administração de sistemas. Viciado em Internet, servidores, e em passar conhecimento. Idealizador do Devin, tem como meta aprender e ensinar muito Linux, o que ele vem fazendo desde 1997 :-)


Leia também



Comentários

4 respostas para “Apache: Redirecionando domínios antigos para novos”

  1. Lenon disse:

    Cara, procurei muuuuito sobre isso, é so consegui enterder graças a essa explicação. =D

    Valew mesmo cara, tudo de bom Aê. ^.^

  2. Sérgio disse:

    Muito bom Hugo, esse artigo me ajudo muito para trabalhar com Urls amigáveis no php, abraço.

  3. Scientist disse:

    Olá gostei muito, uma pergunta e domínios novos com palavras chaves relevantes para o site a ser redirecionado poderão gerar visitas?

  4. Olá, primeiramente parabéns pela iniciativa, muito bom seu conteúdo.

    Ademais disso, gostaria de tirar algumas dúvidas, se possível.

    Bem, eu administro alguns sites em WordPress e percebi que as slugs das categorias que foram criadas não tem valor semântico para o SEO do site, exemplo:
    A categoria imóveis à venda em porto seguro, tem o slug "psvendas" ao invés de "imoveis-em-porto-seguro-vendas".

    Além disso, a estrutura do permalink é baseada na categoria, dessa forma: http://www.imoveisemportoseguro.com.br/psvendas/casa-com...

    Eu quero mudar o slug para ter valor no SEO e melhorar o posicionamento do site nas buscas, como faço o redirecionamento 301 no .HTACESS, para ficar da seguinte maneira e não ter perda dos links? http://www.imoveisemportoseguro.com.br/imoveis-em-porto-...

    Seria dessa forma que se segue?
    Entrar no WordPress e alterar o slug de "PSVENDAS" para "IMOVEIS-EM-PORTO-SEGURO-VENDAS"
    E editar o .HTACESS com as regras abaixo?
    RewriteCond http://www.imoveisemportoseguro.com.br/psvendas/(
    RewriteRule http://www.imoveisemportoseguro.com.br/imoveis-em… [L,R=301]

    Por último, tem um site http://www.imoveisemportoseguro.com eu vou migrá-lo para WordPress, como o site foi feito de uma forma inadequada só a home está indexada, eu preciso fazer algum tipo de redirecinamento 301?

    Desde já grato,
    Ibisen

Deixe uma resposta