Redirecionamento .htaccess, do antigo URL sujo para um novo URL limpo com parâmetros

Redirecionamento .htaccess, do antigo URL sujo para um novo URL limpo com parâmetros

Eu tenho os 2 links a seguir, não sou muito bom com regras .htaccessainda.

Old URL: http://www.mywebsite.org.uk/donate/donate.php?charity_id=885&project_id=18111
New URL: http://new.mywebsite.org.uk/donation/to/885/18111

Quero todo o tráfego proveniente do URL antigo para o novo URL (incluindo os parâmetros charity_id& project_id).

Estou tentando aprender as regras do .htaccess, mas acho os tutoriais on-line meio vagos.

Eu realmente gostaria de uma explicação simples sobre as regras do .htaccess.

(Dê um peixe a um homem, alimente-o por um dia,ensine um homem a pescar, alimente-o por toda a vida).

A resposta correta será aquela com uma explicação simples e útil (juntamente com as regras, se possível!).

Responder1

Para aprender a configurar regras .htaccess você precisa pelo menos de algumas habilidades de regexp e estar confiante para usar o módulo mod_rewrite do Apache, já que é útil para construir regras de reescrita graças à sua flexibilidade.

Se sim, seu código pode ser como

RewriteEngine On
RewriteCond %{QUERY_STRING} ^charity_id=([0-9]+)&project_id=([0-9]+)$
RewriteRule donate/donate.php http://new.mywebsite.org.uk/donation/to/%1/%2? [L,R=301]

Nohttp://httpd.apache.org/docs/2.4/mod/mod_rewrite.html(para a versão 2.4 do Apache, escolha uma diferente se for o caso) está disponível uma referência útil, então você deve começar a partir dela, até mesmo para entender melhor o código acima.

Você pode pensar nele RewriteRulecomo um tijolo para reescrever, então cada regra o usará pelo menos uma vez. Você adicionará antes RewriteCondquando precisar verificar vars de ambiente ou fazer referência a valores de string de consulta, como em nosso trecho de código.

Para colocar uma referência anterior na string de substituição proveniente do anterior, RewriteCondvocê usará os valores from %1to %9 ; se você precisar de referência anterior da primeira parte de RewriteRulesi mesmo, você usará $1to $9.

Cuidado com o sinal de interrogação no final do URL de substituição, pois é a maneira de pular a string de consulta; se estiver faltando, você terá o ?charity_id=885&project_id=18111novo URL no final.

Responder2

Em outro post, sysadmin1138 escreveu uma introdução muito boa à reescrita de mod.

Você pode encontrar a postagemaqui.

/EDITAR: Exemplo:

old: http://example.com/path?var=val 
new: http://example.com/path/var/val

.htaccess

RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/path /path/%1/%2?

informação relacionada