htaccess Redirect / RedirectMatch com URLs que contêm caracteres especiais / codificados

1

Atualmente, estou aplicando uma variedade de redirecionamentos 301 em um arquivo .htaccess para um site que mudou recentemente sua estrutura. Tudo está funcionando como esperado, com exceção dos URLs que contêm caracteres especiais, pois estou recebendo erros 404.

Por exemplo, as seguintes diretivas que têm um símbolo de marca registrada (®) exibem páginas 404:

RedirectMatch 301 ^/directory/link-with®-special-character(/)?$ somelink.com
RedirectMatch 301 ^/directory/link-with%c2%ae-special-character(/)?$ somelink.com

Eu também tentei usar Redirect , RewriteRule e ao redor dos URLs com aspas duplas e nada parece funcionar.

Alguém sabe o que pode estar acontecendo ou a maneira correta de lidar com esses tipos de diretivas?

Qualquer ajuda é muito apreciada.

    
por dSquared 05.11.2012 / 02:10

1 resposta

1

Eu posso confirmar que essas duas tentativas no RedirectMatch também falharam na minha instalação do Apache, mesmo considerando a capitalização (meus logs veem as solicitações como link-with%C2%AE-special-character ).

Você pode considerar o uso dos recursos de regex do RedirectMatch, substituindo o posicionamento do símbolo de marca registrada por .* ou (como parece funcionar para o meu ambiente do apache) .. , por exemplo

RedirectMatch 301 ^/directory/link-with..-special-character(/)?$ http://somelink.com

Como indicado pela urlencoding %C2%AE , esse símbolo de marca registrada é interpretado como dois caracteres, então .. funciona como um regex para ele, enquanto . não.

    
por 05.11.2012 / 05:52