在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中。它工作正常,但如果我看到它几天后,似乎程序停止,我得到服务器错误,然后需要重新启动服务器。