Tente o seguinte usando mod_rewrite / mod_proxy:
RewriteEngine On
# Request https://example.com/+this
RewriteCond %{HTTP_HOST} ^(example\.com)$ [NC]
RewriteRule ^/?\+([a-zA-Z0-9]+)$ https://a.%1/$1 [P]
# Request https://example.com/this+
RewriteCond %{HTTP_HOST} ^(example\.com)$ [NC]
RewriteRule ^/?([a-zA-Z0-9]+)\+$ https://b.%1/$1 [P]
Isso pressupõe que this
consista apenas nos caracteres a-z
, A-Z
e 0-9
(atualizados em relação aos comentários). Como alternativa, você pode usar o sinalizador NC
( NOCASE
- case insensitive) no RewriteRule
e especificar um padrão de apenas [a-z0-9]
. Ou, se você estiver preparado para permitir também um sublinhado, poderá usar a classe de caractere abreviada \w
(igual aos caracteres [A-Za-z0-9_]
- "word"). Por exemplo:
RewriteRule ^/?(\w+)\+$ https://b.%1/$1 [P]
ATUALIZAÇÃO: Depois de reler sua pergunta atualizada , acho que tive a lógica invertida! (Embora o primeiro tenha funcionado?) Tente o seguinte:
# https://a.example.com/this TO https://example.com/+this
RewriteCond %{HTTP_HOST} ^a\.(example\.com)$ [NC]
RewriteRule ^/?([a-zA-Z0-9]+)$ https://%1/+$1 [P]
# https://b.example.com/this TO https://example.com/this+
RewriteCond %{HTTP_HOST} ^b\.(example\.com)$ [NC]
RewriteRule ^/?([a-zA-Z0-9]+)$ https://%1/$1+ [P]
Se essas diretivas estiverem em .htaccess
, então o padrão RewriteRule
pode ser simplificado um pouco ... o prefixo /?
pode ser omitido. Então, ^/?([a-zA-Z0-9]+)$
se torna ^([a-zA-Z0-9]+)$
.
Observe que essas diretivas precisarão chegar perto do topo do arquivo .htaccess
, antes do "front controller", caso contrário elas não serão processadas.
E quando estiver fazendo proxy para HTTPS (protocolo SSL), você precisará certificar-se de que SSLProxyEngine On
esteja definido na configuração do seu servidor.