Drupal 8(8.6.13))で動作しているマルチサイト設定があります-すべてのサイトがコードベースとデータベースを喜んで共有していますが、共有しているようには見えませんdataプレフィックス配列方式を使用したサイト間のテーブル-これはDrupalで変更されました= 8より古いバージョンから?
...ほとんどのデータはDrupal 7またはそれ以前)のためのものであり、与えられた解決策は有効に見えますが、実装しようとしても完全には機能しません。
たとえば、ベース(デフォルト)サイトで分類法、コンテンツタイプ、およびREST APIなどの管理機能を処理します。各サイトは独自のコンテンツとテーマを処理できます(ユーザーがいません)心配)とsites/multi-site-1/settings.php
はこれを適切に処理するように構成されています(私はそう思います)。
ベースsettings.php
:
$databases['default']['default'] = array(
'database' => 'base_database',
'username' => 'db_user',
'password' => 'db_password',
'prefix' => array(
'default' => 'base_',
// ** content type and fields seem to share okay!
'content_type_' => 'shared_',
'content_field_' => 'shared_',
// ** the other tables with 'shared_' prefix that do not work shown below
とsites/multi-site-1/settings.php
:
$databases['default']['default'] = array (
'database' => 'base_database',
'username' => 'db_user',
'password' => 'db_password',
'prefix' => array(
'default' => 'site_1_',
// ** can these even be shared?
// 'config' => 'shared_',
// 'config_snapshot' => 'shared_',
// ** users related things have errors when installing multi-site-1
//'authmap' => 'shared_',
//'profile_fields' => 'shared_',
//'profile_values' => 'shared_',
//'permission' => 'shared_',
//'role' => 'shared_',
//'sessions' => 'shared_', //1. error - if sharing site won't even start install
//'user' => 'shared_', //3. error - "EntityStorageException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY': "
//'users' => 'shared_',
//'users_roles' => 'shared_', //2. error - "The "user_role" entity type does not exist."
//'users_data' => 'shared_', //2. error - "Table users_data already exists"
//'users_field_data' => 'shared_',
// ** taxonomy related share seems okay but not working?
//'taxonomy_index' => 'shared_',
//'taxonomy_term_data' => 'shared_',
//'taxonomy_term_field_data' => 'shared_',
//'taxonomy_term__parent' => 'shared_',
//'vocabulary' => 'shared_', // 1. install error - not present in D8 db?
//'vocabulary_node_types' => 'shared_',
//'term_data' => 'shared_', // not present in D8?
//'term_hierarchy' => 'shared_', // not present in D8?
//'term_image' => 'shared_', // not present - n/a?
//'term_lineage' => 'shared_', // not present - n/a?
//'term_node' => 'shared_', // not present - n/a?
//'term_relation' => 'shared_', // not present - n/a?
//'term_synonym' => 'shared_', // not present - n/a?
),
'Host' => 'localhost',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
'collation' => 'utf8mb4_unicode_ci',
);
これをより良くする方法についての洞察は大歓迎です!
いくつかの回答はすでに読んで参照しています:
簡単な説明付きで自分の答えを投稿しています...
私は Config Split および Features モジュールを調査しましたが、Drupalのセットを実行するこのインスタンスに必要なものが提供されていないことがわかりましたサイトの。
サイト間で共有する必要がある共有データやその他の相互運用性は、期待どおりに処理されません...したがって、私の解決策は、Drupalインスタンスがユーザーを適切なWebサーバーでのリダイレクトを介したサイトのコンテンツ、およびパスとコンテキストフィルターの適切な使用。
Drupal 8に関して同様の質問に答えようとしている他の人がここにいる場合は、これらを考慮してください:
.htaccess
は素晴らしいことを行うことができます=> https:/ /code.tutsplus.com/tutorials/an-in-depth-guide-to-mod_rewrite-for-Apache--net-6708 ## multi-site-1 ==> _workspace/base-site/web/sites/multi-site-1
<VirtualHost *:80>
DocumentRoot "/var/www/base-site.com/web"
ServerName multi-site-1.com
ServerAlias www.multi-site-1.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/base-site.com/web">
Options FollowSymLinks Multiviews Indexes
AllowOverride All
Order allow,deny
Allow from all
Require all granted
MultiviewsMatch Any
</Directory>
ErrorLog "/private/var/log/Apache2/multi-site-1.com-error_log"
CustomLog "/private/var/log/Apache2/multi-site-1.com-access_log" common
</VirtualHost>
そして、おそらく.htaccess
のようなもの:
RewriteCond %{HTTP_Host} ^(?:www\.)?multi-site-1\.com(.*)$ [NC]
RewriteRule ^(.*)$ https://www.base-site.com/multi-site-1/$1 [L]
@ leymannx に感謝します。