Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache反向代理-停止尾部斜杠重定向_Apache_Mod Rewrite_Webserver_Apache2_Mod Proxy - Fatal编程技术网

Apache反向代理-停止尾部斜杠重定向

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

我正在将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>
如果我发出相同的请求(没有尾随斜杠),它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