Redirecionar com picadas de consulta

1

Eu tenho um redirecionamento muito chato que não consigo descobrir.

Eu tenho muitas centenas de páginas, como abaixo:

example.com/directory/in.php?url_id=28930

Eu quero redirecionar todos, por exemplo /directory/in.php?url_id=28930

Os redirecionamentos vão todos para a página inicial.

Qual regra de redirecionamento você poderia sugerir?

Eu já tentei muitas regras de redirecionamento, mas todas falharam por algum motivo.

    
por PaulC 06.06.2018 / 19:07

1 resposta

1

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.

    
por 06.06.2018 / 19:28