Apache反向代理-停止尾部斜杠重定向
我正在将Sun One(iPlanet)6.1上运行静态HTML的站点迁移到Apache上的Drupal站点 需要保持旧服务器运行并提供旧内容,直到它可以移动到Drupal中。我认为最简单的方法是在Apache中有一些反向代理条目指向这个旧内容 以下是我在服务器上下文级别的httpd.conf中的内容Apache反向代理-停止尾部斜杠重定向,apache,mod-rewrite,webserver,apache2,mod-proxy,Apache,Mod Rewrite,Webserver,Apache2,Mod Proxy,我正在将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
RewriteEngine On
RewriteLogLevel 9
RewriteLog "/var/log/httpd/rewrite_log"
RewriteRule offices/ist/?(.*)$ http://oldserver/offices/ist/$1 [P]
<Location /offices/ist/>
ProxyPassReverse /
</Location>
如果我发出相同的请求(没有尾随斜杠),它302将使用旧服务器的名称重定向
http://newserver/offices/ist/somedir => Redirect to http://oldserver/offices/ist/somedir/
Apache不应该在将重定向发送回客户端之前捕获它吗
我可以让Apache在将这些请求发送到旧服务器之前重写它们吗?我不确定,但可能是
(.*)
太贪婪了
我查看了,但没有找到带有?
的示例
我建议在不使用/?
或类似示例的情况下进行尝试
问题是Sun One的重定向头导致的。
将Apache代理到另一个Apache服务器,问题就消失了。Apache能够捕获后端Apache服务器发送的重定向,然后再将其发送到客户端。问题的标题是
停止尾随斜杠重定向
,那么为什么带尾随斜杠的重定向可以,而不带尾随斜杠的重定向不行呢?当传入URI中存在尾随斜杠时,是否要传递该斜杠?如果不存在,是否要添加该斜杠?是否要删除该斜杠?什么?@faa重定向来自Sun One Web服务器。当它看到一个不带尾随斜杠的目录请求时,它会向带有尾随斜杠的同一URI发送重定向。Apache代理未捕获此重定向,因此主机名不会重写为代理主机名。我希望Apache proxy捕获重定向请求。问题是Sun One的重定向头导致的。通过代理Apache服务器,问题就消失了。Apache能够在发送到客户端之前捕获后端Apache服务器发送的重定向。@faa:我知道。但我不确定优先顺序。
http://newserver/offices/ist/somedir => Redirect to http://oldserver/offices/ist/somedir/
ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar