我正在将运行静态HTML的站点在Sun One(iPlanet)6.1上迁移到Apache上的Drupal站点。
要求旧服务器保持运行并提供旧内容,直到可以将其移动到Drupal中。我认为最简单的方法是在Apache中有一些指向这个旧内容的反向代理条目。
以下是我在服务器上下文级别的httpd.conf中所拥有的内容。
RewriteEngine On
RewriteLogLevel 9
RewriteLog "/var/log/httpd/rewrite_log"
RewriteRule offices/ist/?(.*)$ http://oldserver/offices/ist/$1 [P]
<Location /offices/ist/>
ProxyPassReverse /
</Location>
当我提出这样的请求时,一切正常。
http://newserver/offices/ist/somedir/
如果我发出相同的请求(没有斜杠),则302使用旧服务器的名称重定向。
http://newserver/offices/ist/somedir => Redirect to http://oldserver/offices/ist/somedir/
Apache在发送回客户端之前不应该捕获此重定向吗?
我可以让Apache在将这些请求发送到旧服务器之前重写这些请求吗?
答案 0 :(得分:0)
我不确定,但可能(.*)
太贪心了。
我查看了Apache mod_rewrite,但我没有找到?
的示例。
我建议不要使用/?
或与Apache mod_proxy示例类似的内容进行尝试。
ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar
答案 1 :(得分:0)
问题是Sun One重定向标头的结果 将Apache代理到另一台Apache服务器,问题就消失了。 Apache能够捕获后端Apache服务器发送到客户端之前发送的重定向。