Dominando o Redirecionamento com mod_rewrite
no Apache
Se você está gerenciando um site que requer redirecionamento de tráfego de um domínio para outro, enquanto preserva o acesso a certos caminhos, o mod_rewrite
no Apache pode ser seu melhor aliado. Neste post, abordaremos como redirecionar todas as solicitações, exceto um caminho específico, como /audio
, usando mod_rewrite
.
O Problema
Muitos webmasters se encontram em uma situação onde precisam redirecionar o tráfego para um novo domínio, mas querem permitir que solicitações específicas passem sem alterações. Por exemplo, se você está fazendo a transição de meudominio.exemplo
para novodominio.exemplo
, e deseja que todo o tráfego seja redirecionado, exceto as solicitações para /audio
, é aí que o mod_rewrite
entra em cena.
Problemas Comuns de Sintaxe
A tentativa original feita por um usuário para configurar o redirecionamento incluiu um uso complexo de expressões regulares e condições avançadas. Embora a intenção estivesse correta, o uso do HTTP_HOST
no RewriteCond
foi mal orientado, pois não inclui o caminho da solicitação.
A Solução
Para alcançar o redirecionamento desejado enquanto permite o acesso ao caminho /audio
, sua configuração do Apache deve ser ajustada da seguinte forma:
Configuração Passo a Passo
-
Ative o Módulo de Reescrita: Primeiro, certifique-se de que o módulo de reescrita está ativado.
RewriteEngine on
-
Configure a Condição: Use a variável
REQUEST_URI
para verificar se a solicitação NÃO é para o caminho/audio
.RewriteCond %{REQUEST_URI} !^/audio
-
Defina a Regra de Reescrita: Crie uma regra que trata do redirecionamento para o novo domínio.
RewriteRule ^(.*)$ http://www.novodominio.exemplo [L,R=301]
Juntando Tudo
Na sua configuração do VirtualHost
, deve ficar algo como isto:
<VirtualHost *:80>
ServerAdmin me@meudominio.exemplo
DocumentRoot "/var/www/meudominio.exemplo/htdocs"
ServerName www.meudominio.exemplo
ServerAlias meudominio.exemplo
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/audio
RewriteRule ^(.*)$ http://www.novodominio.exemplo [L,R=301]
RewriteLog /caminho/para/arquivo/log
RewriteLogLevel 3
ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>
Depuração da Sua Configuração
Se você ainda encontrar problemas após configurar tudo, considere ativar o log para ver as condições e regras em ação:
- Use o
RewriteLog
para especificar um arquivo de log e definir um nível de log alto o suficiente para capturar detalhes relevantes.
RewriteLog /caminho/para/arquivo/log
RewriteLogLevel 3
Compreendendo os Logs
Quando você verificar os logs após implementar as regras acima, certifique-se de que as solicitações para /audio
não atingem a regra de reescrita.
Conclusão
Configurar o redirecionamento de URL usando mod_rewrite
é uma maneira poderosa de gerenciar o tráfego, enquanto garante que caminhos específicos permaneçam acessíveis. Ao focar na configuração correta e entender o comportamento de REQUEST_URI
, você pode resolver problemas relacionados a redirecionamentos indesejados de forma eficaz.
Com este guia, você agora está preparado para lidar com redirecionamentos de URL no Apache com confiança. Boa codificação!