web-dev-qa-db-ja.com

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 headers

一方、機能する呼び出しを検査している間は、すべて正常に表示されます。

enter image description here

私は次のアイデアを試しましたが、うまくいきませんでした。

RewriteRule

書き換えルールの追加:

  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のオンとオフも試しましたが、機能しませんでした。

どんな助けでも大歓迎です。

同様の問題がありましたが、私の場合、VirtualHostをHTTPからHTTPSを使用してVirtualHostにリダイレクトしていました。リダイレクトディレクティブでは、最後の/がありませんでした。 -)。

例:リダイレクト/ https:// localhost

そして私は次のように解決しました:リダイレクト/ https:// localhost/

1