Apache2 e reescrever mapa - horas de tentativas

1

Eu fiquei com problema de reescrita.

O que eu quero fazer é redirecionar milhares de URLs quase aleatórios para novos. Eu irei construir o mapa manualmente, mas eu preciso que este código funcione.

RewriteCond %{HTTP_HOST}%{REQUEST_URI}\?%{QUERY_STRING} (^example\.com.abcd.cat_4)(.*)
RewriteRule .* ${url_rewrite_map:$1|NOTFOUND}? [R=301,L]

Eu gostaria que o mapa fosse assim:

example.com/abcd/cat_4 http://example.com/345_exact_address_of_page

URLs antigos se parecem com:

http://example.com/abcd/cat_4=0?Xi4B7WoN;;54

e quero que eles sejam reescritos:

http://example.com/345_exact_address_of_page

Eu tentei muitas coisas, mas não consigo trabalhar ... Você pode me ajudar com isso?

    
por codelame 08.05.2014 / 20:13

2 respostas

1

OK, eu consegui trabalhar. Para qualquer outra pessoa, aqui está a solução.

RewriteCond %{HTTP_HOST}%{REQUEST_URI}\?%{QUERY_STRING} (^example\.com.abcd.abcd=.*)
RewriteRule .* ${url_rewrite_map:%1|$1}? [R=301,L]

Para responder a resposta de Krist van Besien: Eu acredito que você não pode usar% 1% 2% 3 usando uma linha antes, duas linhas antes, etc.% n se refere apenas à última linha RewriteCond, então eu tive que colocar tudo em uma linha e, em seguida, verifique o mapa. Mas obrigada de qualquer maneira, você me empurrou na direção certa:)

    
por 09.05.2014 / 21:25
1

Você está usando $ 1 como chave de pesquisa em seu mapa, mas esse parâmetro apenas armazena o que você captura no RewriteRule. As seqüências de caracteres que você captura em seu RewriteCond são capturadas em% 1,% 2 etc ...

Então você deve usar algo como:

RewriteCond %{HTTP_HOST}   (^example\.com)
RewriteCond %{REQUEST_URI} (/abcd/cat_4)
RewriteRule .* ${url_rewrite_map:%1%2|NOTFOUND} [R=301,L]
    
por 09.05.2014 / 16:38