https://myfirstdomain.com/lool/https:/alf.mydomain.com/service/wopi/files/uuid?query_params
我试图在代理发生之前重写 URL 的一部分( ),并且我的默认 SSL vhost 中有以下相关部分:
<IfModule mod_rewrite.c>
RewriteEngine On
LogLevel debug rewrite:trace3
RewriteRule ^lool/https:/alf.mydomain.com\/(.*) lool/https://alf.mydomain.com/$1 [QSA,NE]
</IfModule>
ProxyPass / https://localhost:2323/
ProxyPassReverse / https://localhost:2323/
我在重写日志中看到了这一点:
applying pattern '^lool/https:/alf.mydomain.com' to uri '/lool/https:/alf.mydomain.com/service/wopi/files/uuid
但在接收此信息的服务上,我发现 URL 尚未重写。如果能提供任何线索,告诉我哪里做错了,我将不胜感激。我本质上是在尝试添加/
被代理服务器删除的额外内容,而这些内容位于我无法访问的基础设施的某个地方。
编辑: 在后端 WOPI 服务的日志中,它看到未经修改的请求 URL:
Request from 127.0.0.1:42035: GET /lool/https:/alf.mydomain.com/service/wopi/files/uuid
答案1
RewriteRule ^lool/https:/alf.mydomain.com\/(.*) lool/https://alf.mydomain.com/$1 [QSA,NE]
当用于虚拟主机上下文,RewriteRule
图案匹配完整的 URL 路径,包括斜杠前缀(这仅在以下情况下被删除:目录语境)。
请尝试以下类似操作:
RewriteRule ^/lool/https:/(alf\.mydomain\.com/.*) /lool/https://$1 [PT,NE]
斜线前缀也是必需的代换在虚拟主机上下文中使用时,为了指定文档根目录相对 URL 路径。
我刚刚扩展了捕获的模式以包含主机名,以避免重复代换。
文字点应该在RewriteRule
图案. 而斜杠 ( /
) 则无需转义。
该QSA
标志在这里是多余的,因为您没有在代换。
您可能需要或不需要PT
(passthrough
)标志才能让 mod_proxy 接收它。
您还应该删除<IfModule mod_rewrite.c>
包装器 - 除非这是为了在没有 mod_rewrite 的情况下工作?否则,当 mod_rewrite 不可用时,您只会掩盖错误。