apache 2.4 - codificar em dobro a string de consulta já codificada na URL

1

Preciso de ajuda em relação a um requisito. Nós temos o Apache 2.4.6 instalado

Eu tenho um URL que tem uma string de consulta codificada:

https://example.com/home?testStr%3Dhello%26id%3Drad

Estou tentando descobrir como duplicar a codificação apenas da parte da string de consulta da URL usando o mod_rewrite no servidor da Web do Apache para:

https://example.com/home?testStr%253Dhello%2526id%253Drad

Isso é para um dos problemas que estou tentando corrigir.

    
por rad123 02.10.2018 / 04:02

1 resposta

1

Apenas para ecoar as preocupações nos comentários ... esse é um requisito estranho. No entanto, você pode fazer isso usando mod_rewrite. Por exemplo, tente o seguinte:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(testStr%3Dhello%26id%3Drad)$
RewriteRule ^/?(home)$ /$1?%1 [B,NE,R,L]

Isso emite um redirecionamento temporário (302) de /home?testStr%3Dhello%26id%3Drad para /home?testStr%253Dhello%2526id%253Drad (duplamente codificado).

A variável de servidor QUERY_STRING não é% -decoded, portanto, você corresponde à string de consulta literal conforme fornecido na diretiva RewriteCond .

A referência anterior $1 refere-se ao subpadrão capturado no padrão RewriteRule , isto é. home .

A referência anterior %1 refere-se ao subpadrão capturado na última condpat CondPattern (a diretiva RewriteCond ), por exemplo. a string de consulta codificada em% ( testStr%3Dhello%26id%3Drad ).

O sinalizador B (escape backreferences) na RewriteRule directive% -codifica a referência de referência ( %1 ) para codificar duplamente a string de consulta.

O sinalizador NE (noescape) impede que o susbstitution seja mais (triplo) codificado por URL!

    
por 02.10.2018 / 23:52