Você pode usar um RewriteMap para fazer o escape sem escape para você. assim:
RewriteMap unescape int:unescape
RewriteCond %{QUERY_STRING} (location|place)=(.*)
RewriteCond ${unescape:%2} café
RewriteRule ^/find/$ /find/1234? [L,R]
Na segunda linha de RewriteCond eu uso% 2, pois% 1 conteria "location" ou "place".
No entanto, adicionar um monte de RewriteRules à sua configuração para mapear palavras para números será um grande impacto no seu servidor, e será difícil de manter. Uma solução melhor é usar um RewriteMap para isso também.
Por exemplo, asume que /etc/apache2/places.txt
contém:
café 1234
shop 1235
...
Então, isso deve funcionar para você:
RewriteMap unescape int:unescape
RewriteMap places txt:/etc/apache2/places.txt
RewriteCond %{QUERY_STRING} (location|place)=(.*)
RewriteCond ${unescape:%2} (.*)
RewriteRule ^/find/$ /find/${places:%1}? [L,R]
Você também pode usar um RewriteMap baseado em uma consulta de banco de dados. Essa seria a minha escolha preferida, pois eu poderia fazer o trabalho de combinar palavras com números para o sistema de gerenciamento de conteúdo.
Mais detalhes você pode encontrar na documentação: link