【发布时间】:2013-01-28 12:54:52
【问题描述】:
我正在将在 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 在将这些请求发送到旧服务器之前重写它们吗?
【问题讨论】:
-
您的问题的标题是
Stop Trailing Slash Redirection那么为什么带有斜杠的重定向是可以的,而没有斜杠的重定向不是?是否要在传入 URI 中出现尾部斜杠时传递它,如果不存在,是否要添加它,是否要删除它,什么? -
@faa 重定向来自 Sun One 网络服务器。当它看到对没有尾部斜杠的目录的请求时,它会发送重定向到带有尾部斜杠的相同URI。 Apache 代理未捕获此重定向,因此主机名不会重写为代理主机名。我希望 Apache 代理捕获重定向请求。
-
问题是由 Sun One 的重定向标头引起的。代理到 Apache 服务器,问题就消失了。 Apache 能够在后端 Apache 服务器发送到客户端之前捕获重定向。
标签: apache mod-rewrite webserver apache2 mod-proxy