有一个应用程序在端口 10001 上运行,我希望有一个反向代理来为它提供服务hostname/ds
。唯一的问题是有硬链接脚本/scripts/...
这意味着hostname/ds/
应该让我localhost:10001/
并且hostname/scripts
应该首先将请求 url 重写为hostname/ds/scripts/*
.
我的配置:
<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>
它不起作用:hostname/scripts/
得到一个 404。同时hostname/ds/scripts/
得到应用程序的正确答案。
根据https://stackoverflow.com/questions/9003358/apache-rewrite-then-proxy-pass PT
应该可以工作。我究竟做错了什么?
您的模式中有错字,请尝试
^/
代替/^
(后者永远不匹配)您也可以通过简单地添加第二个 ProxyPass 来匹配 /scripts 来做到这一点,如下所示:
我知道这个线程已经解决,但您似乎正在尝试使用 ProxyPass 访问 Synology DiskStation 的 Web 界面。对于遇到同样问题的任何人,对于最新版本(DSM 5.1-5004 Update 2),我必须使用以下配置和以下 RewriteRules:
这显然会随着 DS 的较新版本而发生变化。我发现在搜索 DS 请求的文件夹(需要重定向的文件夹)时使用 FireBug 非常有用。