Se você precisar apenas de link , remapeie para link sem redirecionamento em geral, ou seja, sem necessidade da condição especial HTTP_USER_AGENT :
Conteúdo no servidor externo
Se você precisar manter a parte do domínio do URL do navegador como está e o conteúdo estiver em um servidor diferente, ele não será interno Redirecionando ou reformando e você teria que usar o Proxy reverso .
Enquanto o sinal [P] usado no seu exemplo faz com que a solicitação seja tratada por meio de uma solicitação de proxy por mod_proxy , não é recomendado:
Performance warning
Using this flag triggers the use of mod_proxy, without handling of persistent connections. This means the performance of your proxy will be better if you set it up with
ProxyPassorProxyPassMatch. This is because this flag triggers the use of the default worker, which does not handle connection pooling. Avoid using this flag and prefer those directives, whenever you can.
A ProxyPass Diretiva que Mapeia servidores remotos para o local O servidor URL-espaço só está disponível nos contextos configuração do servidor , host virtual e diretório , mas não disponível em .htaccess context .
Se você não tiver acesso à configuração do servidor, só poderá fazer isso com RewriteRule , como é permitido em .htaccess context. É exatamente como no exemplo da sua pergunta.
Se você puder acessar a configuração <VirtualHost> (ou solicitar uma modificação), você poderá adicioná-la:
<Location "/test/">
ProxyPass "http://api.example.com/title/test/"
</Location>
Conteúdo no mesmo servidor
Se o conteúdo estiver fisicamente no mesmo servidor, mas em um% diferente <VirtualHost> , a maneira mais simples é não usar mod_rewrite ou mod_proxy , mas mod_alias . A diretiva Alias permite que os documentos sejam armazenados no sistema de arquivos local, exceto em DocumentRoot .
Alias "/test" "/path/to/api/title/test"
Se você precisar apenas remapear no caso de agentes de usuário especiais
Neste caso, com o aplicativo AngularJS, parece que você deseja apenas remapear o URL quando ele é visitado por rastreadores de mídia social. Nesse caso, você realmente precisa usar RewriteCond e, com os seguintes RewriteRule s, pode usar a condição da sua pergunta.
Primeiro, certifique-se de ter mod_rewrite instalado , caso contrário você não será capaz de usar RewriteCond e RewriteRule .
Se o conteúdo estiver no servidor externo e você não puder evitar o uso de [P] :
RewriteRule ^test/(.*)$ http://api.example.com/title/test/$1 [P]
Se você estiver no contexto .htaccess , não deverá corresponder ^test/(.*)$ , mas o diretório atual:
RewriteRule (.*) http://api.example.com/title/test/$1 [P]
Se o conteúdo estiver em caminho diferente no mesmo servidor , você poderá usar o caminho do sistema de arquivos para substituição, mas isso não pode ser feito em .htaccess :
Substitutions are only treated as a file-system path when the rule is configured in server (virtualhost) context and the first component of the path in the substitution exists in the file-system.
RewriteRule ^test/(.*)$ /path/to/api/title/test/$1
Eu não usei \d* do seu exemplo: o meta-caractere \d limita a correspondência apenas a dígitos.