2

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

这是我的 Apache2 虚拟主机配置。我确保加载了 mod_proxy 和 mod_rewrite。我可以通过代理到达 Crafter Delivery,但重写不起作用,因为 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>
4

1 回答 1

2

尝试将重写规则更改为:

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

site您的站点 ID在哪里。

区别在于:

  • 无论 URL 是什么,它都会重写任何传入的内容并保留它(参见(.*)and $1
  • 这是一个直通PT(不是重定向)。这意味着它使用参数增加了请求,并让它直接传递给 Crafter Engine。
于 2018-07-06T12:23:40.387 回答