2

我正在将在 Sun One (iPlanet) 6.1 上运行静态 HTML 的站点迁移到 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 在将这些请求发送到旧服务器之前重写它们吗?

4

2 回答 2

0

问题是 Sun One 的重定向标头造成的。
将 Apache 代理到另一个 Apache 服务器,问题就消失了。Apache 能够在后端 Apache 服务器发送到客户端之前捕获重定向。

于 2013-02-23T03:57:25.053 回答
0

我不确定,但可能是(.*)太贪心了。

我查看了Apache mod_rewrite,但没有找到?.

我建议在没有/?或类似于Apache mod_proxy示例的情况下尝试它。

ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar 
于 2013-02-13T08:29:42.480 回答