Estou tentando redirecionar alguns URLs usando, .htaccess
mas sem sucesso. O problema é que preciso redirecionar duas partes diferentes da URL.
Aqui está um exemplo do que devo redirecionar:
example.com/huawei-reparatie/huawei-mate-7-reparatie
deve ser redirecionado para:
example.com/reparatie/huawei/huawei-mate-7
Então, o que deve ser feito:
- Dividir
huawei-reparatie
emreparatie/huawei
- Remova o
-reparatie
no final de cada URL
Estes são URLs dinâmicos, portanto não é apenas este. Tenho que redirecionar todos esses URLs para muitas marcas diferentes (como huawei
) e vários dispositivos diferentes (como huawei-mate-7
)
Espero que alguém possa me ajudar.
Responder1
Para esclarecer seus requisitos:
/first-second/text-to-keep-removethis
Deve redirecionar para;
/second/first/text-to-keep
Onde
first
e contémsecond
apenasremovethis
letras az minúsculas.first
esecond
são separados por um único hífen.removethis
é prefixado por um único hífen (que também é removido) e sempre ocorre no final do caminho da URL.text-to-keep
é qualquer série de caracteres az e hífen.
Tente o seguinte no topo do .htaccess
arquivo raiz, usando mod_rewrite:
RewriteEngine On
RewriteRule ^([a-z]+)-([a-z]+)/([a-z-]+?)-[a-z]+$ /$2/$1/$3 [R=302,L]
ORewriteRule
padrão(primeiro argumento) é um regex que corresponde apenas ao caminho da URL solicitado, menos o prefixo da barra.
O $n
nosubstituiçãostring são referências anteriores ao grupo de captura correspondente (subpadrão entre parênteses) noRewriteRule
padrão.
Qualquer string de consulta presente na solicitação inicial será passada inalterada. Se alguma string de consulta precisar ser removida, adicione o QSD
sinalizador (Query String Discard).
Observe que este é um redirecionamento temporário (302). Mude apenas para um redirecionamento 301 (permanente) - se essa for a intenção - depois de confirmar que está funcionando bem.