
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 RewriteRule
como um tijolo para reescrever, então cada regra o usará pelo menos uma vez. Você adicionará antes RewriteCond
quando 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, RewriteCond
você usará os valores from %1
to %9
; se você precisar de referência anterior da primeira parte de RewriteRule
si mesmo, você usará $1
to $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=18111
novo 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?