drunomics/multisite-request-matcher

此包已被废弃,不再维护。没有建议替代包。

匹配多站点的请求。

1.7.2 2023-03-30 06:41 UTC

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 请参考提交日志以了解个人贡献者。