Para verificar se há strings de consulta específicas, é necessário usar mod_rewrite e uma diretiva RewriteCond
que verifica a variável QUERY_STRING
server. (O padrão RewriteRule
corresponde apenas ao caminho da URL, o que exclui notavelmente a string de consulta.)
Por exemplo, para redirecionar o URL específico /directory/in.php?url_id=28930
no arquivo raiz .htaccess
, você faria algo como o seguinte:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^url_id=28930$
RewriteRule ^directory/in\.php$ / [QSD,R=302,L]
O QSD
flag (Query String Discard - somente Apache 2.4 +) remove a string de consulta do URL redirecionado. Se você está no Apache 2.2, então você precisará acrescentar um ?
ao final da string substituição , ie. /?
, para remover efetivamente a string de consulta do URL redirecionado. Caso contrário, por padrão, a string de consulta da solicitação é passada para a URL de destino (ou seja, o argumento susbstitution ).
Note também que este é um redirecionamento 302 temporário. Se isso for permanente, altere o 302
para 301
somente quando tiver certeza de que está funcionando OK (para evitar problemas de armazenamento em cache).
Para tornar isso mais geral e redirecionar qualquer URL que contenha um valor de parâmetro url_id
numérico, altere a diretiva RewriteCond
para algo como:
RewriteCond %{QUERY_STRING} ^url_id=\d+$
> Aparte: Do ponto de vista do SEO, os redirecionamentos em massa como este para a página inicial provavelmente serão vistos como soft-404s pelo Google e outros mecanismos de pesquisa.