Eu tenho um site que foi originalmente construído usando ASP clássico. Cerca de um ano atrás, ele foi reescrito em PHP. Isso causou alterações nas extensões de arquivo e algumas páginas foram movidas para novos locais no site. Naturalmente, fizemos 301 redirecionamentos dos URLs antigos para os novos, para que seus usuários e mecanismos de pesquisa pudessem encontrar seus novos locais. Isso funciona bem.
Também criamos para eles uma ferramenta que permite ao proprietário do site criar seus próprios URLs minúsculos que serão redirecionados para uma página com as variáveis de rastreamento de campanha do Google Analytics incluídas no URL, para que possam acompanhar a campanha e ver seu desempenho.
O problema que tenho é que as regras de rastreamento de campanha entram em conflito com os redirecionamentos 301 e impedem que os redirecionamentos funcionem.
Aqui está o código de acompanhamento da campanha:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]
Como você pode ver, ele verifica se existe um arquivo e, caso não exista, ele é redirecionado para um script de rastreamento (tracking.php) que pega o código de rastreamento e o redireciona para o URL apropriado com o código de campanha do Google Analytics na consulta corda.
Esse código faz com que regras como esta falhem:
redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php
Faz sentido que isso não funcione em conjunto, como dizem as regras de rastreamento, "se um arquivo não for encontrado, redirecione para tracking.php". O que eu preciso é que os redirecionamentos 301 sejam executados primeiro e, se nenhum deles corresponder, redirecione para o script de rastreamento. A colocação das regras de rastreamento abaixo dos redirecionamentos 301 não altera os resultados.
Isso pode ser feito via .htaccess? Ou precisarei modificar o script de rastreamento para que, se uma campanha não for encontrada, verifique se o ID da campanha é realmente uma página antiga que precisa ser redirecionada e faça o redirecionamento 301 a partir daí?