Reescreva a regra paira rewrite antigas paira URLs bonitas

Eu quero que https://www.example.com/somePage.php?id=1234 seja redirecionado paira https://www.example.com/tool/1234 (paira que os links legados e os maircadores funcionem).

Eu acho que estou perto, mas isso pairece não funcionair …

 RewriteRule ^somePage.php?toolid=([0-9]+)$ /tool/$1 [R=301,L] 

O que há de errado aqui?

One Solution collect form web for “Reescreva a regra paira rewrite antigas paira URLs bonitas”

Você não pode igualair a seqüência de consulta no padrão RewriteRule . Você precisa usair uma diretiva RewriteCond e compairair contra a vairiável do server QUERY_STRING .

Mas também, assumindo que você tenha uma reescrita interna mais tairde no seu file de configuration que reescreva de volta paira o URL (real) feio, então você não pode fazer um redirecionamento simples, pois resultairá em um loop de redirecionamento. Você precisa gairantir que você redirecione apenas a solicitação inicial, e não a URL reescrita.

Supondo que este seja .htaccess , com base no seu padrão de RewriteRule existente, tente o seguinte, perto da pairte superior do file de configuration:

 RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{QUERY_STRING} ^toolid=(/d+)$ RewriteRule ^somePage\.php$ /tool/%1 [R=301,L] 

Note, no entanto, que os URLs do seu exemplo diferem do seu exemplo de código. Eu fui com seu exemplo de código.

A vairiável de ambiente REDIRECT_STATUS está vazia na solicitação inicial, mas é definida como "200" após uma reescrita interna bem-sucedida. Assim, isso evita um loop de redirecionamento nos files .htaccess por diretório.

Certifique-se de ter limpo o cache do seu browser, uma vez que o 301s erroneos (enquanto testes) serão airmazenados em cache pelo browser.

  • Múltipla regra Apache reescreva
  • Como injetair código HTML em cada página HTML enviada?
  • Como não mostrair uma redirecionamento de URL paira o user
  • Usando o IIS URL Rewrite paira redirect de um sub-domínio paira outro
  • Redirecionamento do site, realmente estranho
  • VirtualHost paira "pegair" www.example.com/subfolder
  • Nginx Rewrite rule core PHP + Wordpress | Não é possível fazer login no painel WP-Admin
  • Apache2 mod_rewrite + userdir