所以目前我在我的 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 错误
有谁知道是什么导致了这种奇怪的行为?
谢谢你。
您的正则表达式不太正确。
*
意思是“零次或多次出现”,因此https://mywebsite.com/test/home/
与它匹配。改为(.*)
,(.+)
表示“出现一次或多次”。那么您的 ProxyPassMatch 不应再与该 URL 匹配。或者完全删除 ProxyPassMatch 行,这是非常无用的,ProxyPass 行会像它一样自动处理 url。
该问题已得到解决。此特定问题的正确配置如下:
删除斜杠并添加通配符使我们能够代理以下任何内容
/test/home
。谢谢大家的意见。