.htaccess 301 redirecionamento não funciona

1

Eu tenho um site usando o sistema CMS baseado em PHP.

Assim, cada página é gerada dinamicamente, assim:

link

Agora quero redirecionar esta página específica para outra página, por exemplo:

Então eu escrevo o arquivo .htaccess da seguinte forma:

redirect 301 /index.php?_m=mod_product&_a=view&p_id=87 https://www.datanumen.com/sql-recovery/

Mas depois que eu carrego o .htaccess no diretório raiz do site, isso não funciona.

Eu repito escrevendo outra regra, como esta:

redirect 301 /sql/ https://www.datanumen.com/sql-recovery/

Então esta regra funcionará perfeitamente.

Por quê?

Obrigado

    
por alancc 30.04.2016 / 10:29

1 resposta

1

Querystring não faz parte da correspondência na diretiva Redirect, para redirecionar as strings de consulta, você precisa usar a mod-rewrite da seguinte forma:

opção 1

RewriteEngine on

RewriteCond %{THE_REQUEST} /index\.php\?_m=mod_product&_a=view&p_id=87 [NC]
RewriteRule ^ https://www.datanumen.com/sql-recovery/? [NC,L,R]

opção 2

RewriteEngine on

RewriteCond %{QUERY_STRING} ^_m=mod_product&_a=view&p_id=87$ [NC]
RewriteRule ^index\.php$ https://www.datanumen.com/sql-recovery/? [NC,L,R]

Usamos um ponto de interrogação vazio ? no final do URL de destino para descartar as strings de consulta antigas. Caso contrário, essas strings de consulta serão exibidas no URL de destino por padrão.

Altere o R para R = 301 se quiser tornar o redirecionamento permanente.

[Testado no apache2 e 2.4]

    
por 30.04.2016 / 17:41