我正在使用具有 Multi-Tenancy 功能的 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>
最佳答案
尝试将重写规则更改为:
RewriteRule (.*) $1?crafterSite=站点 [QSA,PT]
其中 site
是您的网站 ID。
差异是:
- 无论 URL 如何,它都会重写传入的任何内容并保留它(请参阅
(.*)
和$1
) - 这是直通
PT
(不是重定向)。这意味着它会使用参数增强请求并使其直接到达 Crafter Engine。
关于mod-rewrite - Apache 2.4代理为所有请求添加请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51199302/