← Desenvolvimento

Redirect 301 com HTAccess - URLS com ponto de exclamação

Lida 1434 vezes

Offline

muiomuio 
Membro
Mensagens 324 Gostos 0
Feedback +1

Troféus totais: 23
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Estou aqui num impace

Tenho vários endereços do género /?product_id=1008 (é o mesmo que index.php?product_id=1008)e preciso de redireccionar isso manualmente para outro endereço que é uma friendly url.

O que tenho no HTAccess actualmente é:

Código: [Seleccione]
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.               [NC]
RewriteCond %{HTTP_HOST} ^([^.]+\.[a-z]{2,6})$ [NC]
RewriteRule ^(.*)$       http://www.%1/$1      [R=301,L]

RewriteRule ?product_id=1008$ index.php? [R=301]

O RewriteRule do ?product_id=1008 não funciona. Mesmo que coloque RewriteRule \?product_id=1008 ou ^/\?product_id=1008

Alguém sabe como posso fazer este redirect?
Offline

muiomuio 
Membro
Mensagens 324 Gostos 0
Feedback +1

Troféus totais: 23
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Apenas para referir que encontrei a solução. Utilizar o query string para identificar o parametro de query e fazer o redireccionamento, neste caso do ficheiro index.php para o respectivo endereço

Código: [Seleccione]
RewriteCond %{QUERY_STRING} ^product_id=01
RewriteRule ^$ /quemsomos? [R=301,L]

No caso de o ficheiro ter outro nome, por exemplo produtos.php?product_id=01, fica:

Código: [Seleccione]
RewriteCond %{QUERY_STRING} ^product_id=01
RewriteRule ^produtos\.php$ /endereco? [R=301,L]

O ? no final de /endereco serve para impedir que o novo endereço mantenha a query string product_id=01. Caso não tivesse o ? no final ficaria /endereco?product_id=01

No entanto agora surgiu outra questão, a query string muda consuante o idioma, ou seja produtos.php?lang=en?product_id=01

Como é que posso fazer para evitar ter de criar redirects para todos os idiomas do site?