você tem um erro de digitação no seu padrão, tente ^/ em vez de /^ (este último nunca será igual)
Tendo um aplicativo em execução na porta 10001, gostaria de ter um proxy reverso para veiculá-lo em hostname/ds . O único problema é que há scripts vinculados a /scripts/...
Isso significa que hostname/ds/ me levará para localhost:10001/ e hostname/scripts primeiro deverá reescrever o URL da solicitação para hostname/ds/scripts/* .
Minha configuração:
<VirtualHost *:80>
RewriteEngine on
RewriteRule /^scripts/(.*)$ /ds/scripts/$1 [L,PT]
ProxyPass /ds/ http://127.0.0.1:10001/
ProxyPassReverse /ds/ http://127.0.0.1:10001/
</VirtualHost>
Ele não funciona: hostname/scripts/ obtém um 404, enquanto hostname/ds/scripts/ obtém a resposta correta pelo aplicativo.
De acordo com o link PT deve funcionar.
O que estou fazendo errado?
Você também pode fazer isso simplesmente adicionando um segundo ProxyPass para combinar / scripts, assim:
<VirtualHost *:80>
ProxyPass /scripts/ http://127.0.0.1:10001/
ProxyPassReverse /scripts/ http://127.0.0.1:10001/
ProxyPass /ds/ http://127.0.0.1:10001/
ProxyPassReverse /ds/ http://127.0.0.1:10001/
</VirtualHost>
Eu sei que esse segmento já está resolvido, mas parece que você está tentando usar o ProxyPass para acessar a interface da Web de um Synology DiskStation. Para qualquer um que enfrentou o mesmo problema, com a versão mais recente (DSM 5.1-5004 Update 2) eu tive que usar a seguinte configuração com o seguinte RewriteRules:
<VirtualHost *:80>
RewriteRule ^/scripts/(.*)$ /ds/scripts/$1 [L,PT]
RewriteRule ^/webfm/(.*)$ /ds/webfm/$1 [L,PT]
RewriteRule ^/webapi/(.*)$ /ds/webapi/$1 [L,PT]
RewriteRule ^/webman/(.*)$ /ds/webman/$1 [L,PT]
ProxyPreserveHost On
ProxyRequests Off
ProxyVia Off
ProxyPass /ds/ http://192.168.1.10:5001/
ProxyPassReverse /ds/ http://127.0.0.1:5001/
</VirtualHost>
Isso obviamente está sujeito a alterações com versões mais recentes do DS. Eu achei o uso do FireBug muito útil ao procurar pelas pastas que o DS solicita (que precisavam ser redirecionadas).
Tags apache-2.4