因此,目前我在 Oracle HTTP Server 實例上配置了一個具有 ProxyPass 的虛擬主機,如下所示:
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
似乎適用於我嘗試存取的所有子網址,但常規ProxyPass
關鍵字則不然。
我也嘗試ProxyPass
完全刪除,並且在嘗試訪問 /test/home/ 時遇到相同的 404 錯誤
有誰知道是什麼導致了這種奇怪的行為?
謝謝。
答案1
你的正規表示式不太正確。*
表示“零次或多次出現”,因此https://mywebsite.com/test/home/
與其匹配。更改(.*)
為(.+)
,表示“出現一次或多次”。那麼您的 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
。
謝謝大家的意見。