Mod rewrite Apache2.4代理向所有请求添加请求参数

Mod rewrite Apache2.4代理向所有请求添加请求参数,mod-rewrite,apache2,mod-proxy,crafter-cms,Mod Rewrite,Apache2,Mod Proxy,Crafter Cms,我正在使用多租户的Crafter CMS。我正在尝试将RHEL7上的Apache2.4设置为反向代理。->ajp://localhost:9009/?crafterSite=site 这是我的Apache2虚拟主机配置。我已经确保加载了mod_proxy和mod_rewrite。我可以通过代理达到Crafter交付,但重写不起作用,因为Crafter不知道我要加载哪个站点。有没有人对如何让它工作有什么建议 <VirtualHost *:80> ServerName site.

我正在使用多租户的Crafter CMS。我正在尝试将RHEL7上的Apache2.4设置为反向代理。->ajp://localhost:9009/?crafterSite=site

这是我的Apache2虚拟主机配置。我已经确保加载了mod_proxy和mod_rewrite。我可以通过代理达到Crafter交付,但重写不起作用,因为Crafter不知道我要加载哪个站点。有没有人对如何让它工作有什么建议

<VirtualHost *:80>
    ServerName site.example.com
    LogLevel alert rewrite:trace3
    RewriteEngine  On
    RewriteRule ^$ /?crafterSite=site [QSA,L]

    <Proxy *>
            Order allow,deny
            Allow from all
    </Proxy>

    ProxyRequests           Off
    ProxyPreserveHost       On
    ProxyPass               /       ajp://localhost:9009/
    ProxyPassReverse        /       ajp://localhost:9009/
</VirtualHost>

ServerName site.example.com
日志级别警报重写:trace3
重新启动发动机
重写规则^$/?crafterSite=站点[QSA,L]
命令允许,拒绝
通融
代理请求关闭
代理主机
ProxyPass/ajp://localhost:9009/
ProxyPassReverse/ajp://localhost:9009/

尝试将重写规则更改为:

RewriteRule(.*)$1?crafterSite=站点[QSA,PT]

其中
site
是您的站点ID

区别在于:

  • 它重写任何传入的内容,而不考虑URL并保留它(请参见
    (.*)
    $1
  • 这是一个passthrough
    PT
    (不是重定向)。这意味着它使用param扩展请求,并让它直接进入Crafter引擎

这起作用了!太谢谢你了,我已经用头撞这个太久了。