Redirecionar um diretório com .htaccess (RewriteRule)

Gustavo Paes, 31/03/2011

Vamos supor o seguinte cenário: você tem um site com um diretório books/ e dentro dele diversos arquivos, todos indexados pelo google e linkados em dezenas de áreas do seu site e outros sites.

Mas books não é um bom nome para obter um bom resultado de busca no Brasil. O ideal seria livros. Você decide simplesmente renomear e pronto, problema resolvido. Não! Pior, você ganhou um grande problema. Todos os links e indexação serão perdidos e ninguém mais conseguirá chegar de forma simples e direta nas páginas.

O que fazer então para corrigir os links quebrados? Usar o arquivo .htaccess para redirecionar os usuários que chegarem pelos antigos links para a nova url.

O arquivo .htaccess permite que sejam (re)definidas algumas configurações sem que seja necessário a mudança no arquivo principal de configuração do Apache e nem que seja necessário um restart do sistema.

Nem todas as hospedagens permitem isso, mas a maioria sim. É importante que a hospedagem seja linux também.

Crie o arquivo .htaccess no antigo books com o seguinte conteúdo:

RewriteEngine OnRewriteBase /booksRewriteRule   ^(.*?)$  /livros/$1 [R=301,L]

O código acima irá redirecionar os usuários que acessarem a seguinte url, por exemplo: www.seusite.com.br/books/os-grandes-empreendedores.html -> /livros/os-grandes-empreendedores.html

Simples e eficiente (há alguns contras, mas não deixa de ser eficiente).