現時点では、ProxyPass を使用して Oracle HTTP Server インスタンスに仮想ホストを次のように構成しています。
ProxyPass ^/test/home/ https://example.com/
ProxyPassMatch ^/test/home/(.*)$ https://example.com/$1
ProxyPassReverse ^/test/home/(.*)$ https://example.com/$1
アクセスしようとすると、https://mywebsite.com/test/home/<url_from_other_server>
リクエストは期待どおりに機能しているように見えます。ただし、アクセスしようとするとhttps://mywebsite.com/test/home/
プロキシされhttps://example.com/
ず、404 が返されます。
ワイルドProxyPassMatch
カードは、アクセスしようとするすべてのサブ URL に対して機能しているようですが、通常のProxyPass
キーワードは機能していません。
完全に削除しようとしましたProxyPass
が、/test/home/にアクセスしようとすると同じ404エラーが発生します。
この奇妙な動作の原因が何なのか、誰か分かるでしょうか?
ありがとう。
答え1
正規表現は正しくありません。*
は「0 回以上の出現」を意味するため、 とhttps://mywebsite.com/test/home/
一致します。(.*)
を に変更します(.+)
。これは「1 回以上の出現」を意味します。そうすると、ProxyPassMatch はその URL と一致しなくなります。
または、ProxyPassMatch 行を完全に削除します。これはほとんど役に立ちません。URL は ProxyPass 行によって自動的に処理されます。
ProxyPass /test/home/ https://example.com/
ProxyPassReverse /test/home/ https://example.com/
答え2
この問題は解決されました。この問題に対する正しい構成は次のとおりです。
ProxyPass /test/home(.*)$ https://example.com/$1
ProxyPassReverse /test/home(.*)$ https://example.com/$1
スラッシュを削除してワイルドカードを追加すると、 に続くすべてのものをプロキシできるようになりました/test/home
。
皆様のご意見に感謝いたします。