drunomics / multisite-request-matcher
匹配多站点的请求。
Requires
- symfony/http-foundation: ^4.4.9 || ^6.2.7
Requires (Dev)
- phpunit/phpunit: 7.5.20
README
基于环境变量驱动的配置,匹配多站点的请求。该包与symfony/dotenv和symfony/http-foundation(drupal/core中使用)兼容性良好。
多站点设置支持通过公共基础域名($APP_MULTISITE_DOMAIN)或每个站点的域名进行配置。通过依赖环境的变量,公共基础域名也仅对预览环境启用。当访问公共多站点基础域名且没有任何合适的前缀时,将使用配置的默认站点。接下来,如果没有提供SITE变量,它将用于CLI调用。
安装
composer require drunomics/multisite-request-matcher
配置
该包支持通过公共基础域名($APP_MULTISITE_DOMAIN)或每个站点的域名构建站点URL。可选地,支持站点变体,如“admin”或“api”,如果应用使用多个主机进行如管理界面或API端点等操作,则很有用。
这可以用于构建如下URL
-
公共多站点域名
https://site-a_stage.example.com https://site-b_stage.example.com
-
每个站点的域名
https://www.site-a.com https://wwww.site-b.com
-
带有变体的公共多站点域名
https://api--site-a_stage.example.com https://api--site-b_stage.example.com https://admin--site-a_stage.example.com https://admin--site-b_stage.example.com
-
带有变体的每个站点的域名
https://api.site-a.com https://api.site-b.com https://admin.site-a.com https://admin.site-b.com
以下环境变量可以设置以配置请求匹配器
结果
- 将匹配的主机设置为symfony/http-foundation请求API的受信任主机,通过受信任主机模式。
- 以下环境变量被设置
CLI调用
为了使相同的环境变量可用于CLI调用,该包提供了一个名为request-matcher-site-variables
的二进制文件,它基于设置的$SITE
变量输出它们。CLI请求不支持站点变体,因此SITE_VARIANT始终为空。
与Drupal的使用
-
最佳做法是通过composer自动加载器调用请求匹配器;这确保它在非常早的时候调用,并在其他任何内容之前匹配请求。例如,请参阅此处
确保设置了环境变量,并按以下方式调用它
$site = drunomics\MultisiteRequestMatcher\RequestMatcher::getInstance() ->match();
-
将以下行添加到Drupal的sites.php中,以便Drupal可以获取匹配的站点。APP_SITES变量的站点名称应与Drupal站点目录名称匹配
$sites[$request->getHost()] = getenv('SITE');
-
从Drupal中删除任何受信任主机模式,因为请求匹配器已经检查了它。
致谢
由drunomics GmbH开发,hello@drunomics.com 请参考提交日志以了解个人贡献者。