Você não faz. O servidor da Web tem permissão para decodificar caracteres codificados em porcentagem que não decodificam para caracteres especiais antes de aplicar regras de regravação, e tem permissão para decodificar o restante dos caracteres codificados por porcentagem antes de passar os dados para o seu aplicativo da Web. (Veja o RFC 3986.)
O que você deve fazer é aplicar o padrão do controlador frontal em seu aplicativo da Web e manipular todos os percentuais de decodificação (e solicitar o roteamento). Nesse caso, você simplesmente redirecionará todas as solicitações que não corresponderem a um arquivo ou diretório para /index.php
e, em seguida, lerá a URL em $_SERVER['REQUEST_URI']
. É assim que os principais aplicativos da Web baseados em PHP, como o WordPress e o MediaWiki, lidam com isso.