Pelo que parece, você não precisa precisar de RewriteMap
, desde que o número de diretórios seja limitado, o que parece ser, e o ID não seja sensível a maiúsculas e minúsculas. o URL de destino, o que você diz não é (nos comentários).
Para o sufixo ("Y", "O", "B" ou "C"), podemos criar uma variável de ambiente, baseada no diretório que está sendo solicitado:
RewriteEngine On
# Assign value to ID_SUFFIX based on the directory being accessed
RewriteRule ^/?folder1 - [E=ID_SUFFIX:Y]
RewriteRule ^/?folder2 - [E=ID_SUFFIX:O]
RewriteRule ^/?folder3 - [E=ID_SUFFIX:B]
RewriteRule ^/?folder4 - [E=ID_SUFFIX:C]
Em seguida, processe a solicitação apenas se a variável ID_SUFFIX
env tiver sido definida, capturando a ID requerida da string de consulta:
# Capture ID and redirect
RewriteCond %{ENV:ID_SUFFIX} .
REwriteCond %{QUERY_STRING} fh_secondid=[^_]+_[^_]+_([^_]+)
RewriteRule ^ /be/_%1%{ENV:ID_SUFFIX}/ [R=302,L]
A expressão %{ENV:ID_SUFFIX}
naturalmente refere-se ao env var definido anteriormente (se em tudo). Inicialmente, nós simplesmente verificamos se isso está configurado (isto é, contém algo ) - ele só é configurado se um dos diretórios nomeados for requisitado.
%1
é uma referência anterior ao primeiro grupo capturado no último CondPattern correspondente. ie. Isso contém o ID (por exemplo, cli16a
em seu exemplo).
Isso constrói uma substituição do formulário /be/_cli16aY/
e emite um redirecionamento externo.
Observe que este é atualmente um redirecionamento 302 (temporário). Apenas mude para 301 (permanente) quando tiver certeza de que está funcionando bem, para evitar problemas de cache potencial.