【问题标题】:Apache Reverse Proxy - Stop Trailing Slash RedirectionApache 反向代理 - 停止尾随斜杠重定向
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    我查看了Apache mod_rewrite,但没有找到? 的示例。

    我建议尝试不使用 /? 或使用类似于 Apache mod_proxy 示例的内容。

    ProxyPass /foo http://foo.example.com/bar
    ProxyPassReverse /foo http://foo.example.com/bar 
    

    【讨论】:

    • @faa:我知道。但我不确定优先级。
    猜你喜欢
    • 2013-02-17
    • 2023-01-30
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多