回答:
このエラーメッセージは、HTTPホストヘッダー攻撃から保護するためにDrupal 8に追加された機能から発生しています。この機能は、パッチ用に生成された変更レコードにも記載されています。
基本的に、不正な目的でHTTP Hostヘッダーをスプーフィングし、Drupalをだましていくつかのサブシステム(特にリンク生成)で異なるドメイン名を使用させることができました。つまり、HTTP Hostヘッダーはユーザー入力と見なされる必要があり、信頼される必要はありません。
これに対処するために、新しい設定$settings['trusted_host_patterns']
がDrupal 8に追加され、サイトが実行できる「信頼できる」ホスト名のリストを構成しました。設定は、実行を許可するホスト名を表す、デリミタなしの正規表現パターンの配列である必要があります。
たとえば、単一のホスト名「www.example.com」からサイトを実行している場合、これを設定に追加する必要があります(通常はにあります./sites/default/settings.php
)。
$settings['trusted_host_patterns'] = array(
'^www\.example\.com$',
);
注意^
、\.
と$
。これらはPCRE構文です。これらは、「www.example.com」に正確に一致させ、先頭と末尾に余分なものを何も付けず、ドットをワイルドカード文字ではなくドットとして扱うことを意味します。
「example.com」から実行している場合は、次を使用します。
$settings['trusted_host_patterns'] = array(
'^example\.com$',
);
複数のドメインやサブドメインのサイトを実行する必要があり、正規のURLリダイレクトを実行していない場合、設定は次のようになります。
$settings['trusted_host_patterns'] = array(
'^example\.com$',
'^.+\.example\.com$',
'^example\.org',
'^.+\.example\.org',
);
これにより、すべてのサブドメインを含むexample.comおよびexample.orgのすべての亜種からサイトを実行できます。
$settings['trusted_host_patterns']
適切な値に調整すると、サイトを再度参照できるようになります。
admin / reports / statusにあるステータスレポートページから信頼できるホストの設定のステータスを確認することもできます。
設定を完全に削除すると、トラステッドホストメカニズムは使用されず、ステータスレポートページにエラーが表示されます。さらに、サイトはHTTP Hostヘッダー攻撃に対して脆弱である可能性があります。
この設定を構成していて、このメッセージが表示されている場合、おそらく正規表現の構文が台無しになっていることを意味します。この場合、最初の例を取り上げ、設定にコピーして貼り付け、サイトの実行元のホスト名を反映するように編集します。
これtrusted_host_patterns
は、設定ファイルの変数が原因で発生します。ローカル環境で作業しており、これをオーバーライドする場合は、settings.local.php
ファイルで次のセクションを定義します。
/*
* Drupal Trusted Host Patterns
*/
$settings['trusted_host_patterns'] = [];
またはより一般的なパターン:
$settings['trusted_host_patterns'] = [ '.*' ];
または、ローカル環境に固有:
$settings['trusted_host_patterns'] = array(
'^172\.20.\0.\3$',
'^localhost$',
);
これは最も簡単な解決策ですが、不正な目的でHTTP Hostヘッダーをスプーフィングしないように適切な値を設定する必要があるため、お勧めしません。Webサイトがローカルでのみ実行されている場合は、問題ありません。
この問題は、次の場合にも発生します。
<VirtualHost *:443>
いつすべきか
<VirtualHost *:80>
非SSLセットアップで設定し(開発/テスト環境など)、ポート80でサイトにアクセスしてみます。
これは、サーバーの信頼できるホスト構成によるものです。ドメイン名またはを変更すると生成されます'trusted_host_patterns'
。problemeを解決するには、に新しいドメインを追加しますDRUPAL_ROOT/sites/SITE_FOLDER/settings.php
(例:sites/defaults/settings.php
)
例:ドメイン名= newdomain.com
$settings['trusted_host_patterns'] = array(
'^newdomain.com\.loc$',
'^www\.newdomain.com\.loc$',
);