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