在ProxyPassReverse中使用RewriteRule生成的url(regex)

时间:2012-01-25 12:52:09

标签: apache http mod-rewrite webserver mod-proxy

我的网络服务器正在托管许多应用程序,其路径如下

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

我想拥有这些应用程序的临时链接,这些应用程序可以轻松配置为过期。所以我在mysql中保持了temp到app url的映射和expiry time。 在apache中我写了重写规则如下

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

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

a.php使用mysql db将临时网址映射到实际网址。例如 temp1 / xyz - > APP1 / XYZ

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

请帮我处理重定向。

1 个答案:

答案 0 :(得分:0)

我已经弄明白了怎么做。 所以从rewriterule我得到目标url地图,我保存正则表达式。然后我使用了带插值标志的ProxyPassReverse。

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