Apache 反向代理失败,没有尾部斜杠

Apache 反向代理失败,没有尾部斜杠

我目前正在尝试使用 Apache 设置反向代理。我采用了以下配置:

<VirtualHost *:80>
  ServerName my-server

  SSLProxyEngine on
  SSLProxyVerify none 
  SSLProxyCheckPeerCN off
  SSLProxyCheckPeerName off
  SSLProxyCheckPeerExpire off

  ProxyPreserveHost on
  ProxyRequests off
  ProxyPass "/c/"  "https://other.server.com/"
  ProxyPassReverse "/c/"  "https://other.server.com/"

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

我遇到的问题是,当我导航到localhost:8080/c/slug/它时,它按预期工作,但是当我导航到localhost:8080/c/slug它时,它会重定向到,localhost:8080/slug而不是从代理服务器获取内容。

检查呼叫标头时,我发现了301: Moved permanently

HTTP 标头

另一方面,在检查有效的调用时,一切看起来都很好:

在此处输入图片描述

我尝试过以下想法,但都没有奏效:

重写规则

添加重写规则:

  RewriteEngine on
  RewriteRule "slug$" "slug/" [L,R=301]

明确输入 URL

明确输入我想要访问的 URL(不带正斜杠):

  ProxyPass "/c/slug"  "https://other.server.com/"
  ProxyPassReverse "/c/slug"  "https://other.server.com/"

我也尝试过打开和关闭ProxyRequests,但是也没有用。

任何帮助都将受到赞赏。

答案1

我遇到了类似的问题,但在我的例子中,我将 VirtualHost 从 HTTP 重定向到使用 HTTPS 的 VirtualHost,并且在我的 Redirect 指令中缺少最后的/

例如:重定向 /https://本地主机

我解决了:重定向/https://本地主机/

相关内容