在ProxyPassReverse

问题描述:

使用重写规则的结果URL(正则表达式)

我的web服务器承载许多应用程序,其路径看起来像在ProxyPassReverse

http://example.com/app1/ 
http://example.com/app2/ ... 

我想有临时链接,这些应用程序可以很容易地配置为过期。所以我一直保持temp到app网址的映射,在mysql中有到期时间。 在Apache中我已经写了重写规则如下

RewriteEngine On 
RewriteMap linkmap prg:/home/http/a.php 

RewriteCond $1 ^[^/]*$ 
RewriteRule /(.*) /$1/ [R=301,L] 
RewriteRule /(.*) /${linkmap:$1} [P] 

a.php只会映射临时网址使用MySQL数据库真实URL。例如 temp1/xyz - > app1/xyz

一切正常,直到app1中的任何页面尝试重定向到另一个页面。由于我映射基于MySQL的网址,我无法弄清楚如何使ProxyPassReference从MySQL读取并替换重定向URL。 我试图手动指定ProxyPassReference规则,它的工作原理。但是不可能手动添加所有规则,因为我可以通过将链接插入到mysql db来动态创建链接。

请帮我处理重定向。

我已经想通了如何做到这一点。 因此,从重写我得到目标网址地图,我保存我的正则表达式。然后我使用带有内插标志的ProxyPassReverse。

这里有一个问题。我的程序来映射网址是在PHP中。它工作正常,但如果我看到它几天后,似乎程序停止,我得到服务器错误,然后需要重新启动服务器。