httpとhttpsの両方のbase_url?


7

httpとhttpsの両方からアクセスできるサイトがあります。で定義されていないセキュリティレビューの苦情base_urlが表示されsettings.phpます。

しかし、それをとして定義しhttp://example.com、すべてのキャッシュをフラッシュすると、httpsのテンプレートがレンダリングされません。

私がコメントアウトした場合$base_urlの行settings.phpすべてが正常に戻ってきます。

この問題を解決するにはどうすればよいですか?


私はこの質問をするつもりでした。問題は、ほとんどのブラウザーがSSL経由で要求するときに安全でないコンテンツをブロックすることです。したがって、base_urlがexample.comであるが、example.comを介してサイトにアクセスする場合、ブラウザはテーマファイルをロードしません。「Secure Pages」モジュールであるdrupal.org/project/securepagesを使用すると、セキュアでセキュアでないbase_urlを定義できますが、このモジュールは現在ベータ版です。
Screenack 14

参考までに、セキュアページをテストしました。セキュアおよび非セキュアなbase_urlを設定しますが、グローバルbase_urlはテーマリソース用に保持されます。したがって、いいえ、解決策ではありません。
Screenack 14

回答:


5

おそらく次のようなことをする必要があります:

$protocol = (!empty($_SERVER['HTTPS'])) ? 'https' : 'http';
$base_url = $protocol . '://mysite.com';

... Drupalは、サイトへのアクセス方法に応じて、使用するプロトコルを認識できるようにします。


3

私は運が良かった:

$base_url = '//mysite.com';  

また、セッションCookieを維持するために、通常は以下を追加します。

$conf['https'] = TRUE;

これにより、混合モードが可能になります。


この答えは正解です。そのようにマークする必要があります。
Rolando Isidoro 2015年

すべてurl('path', array('absolute'=>TRUE));がとしてレンダリングされるため、これは不正解です//mysite.com/path。これよりも@colanのアプローチを使用する必要があります。
zaporylie 2016年

この回答は、Chromeへのログインを壊す可能性もあります。@colanの答えは正解です。
ジェンランプトン2017

2

これは、CloudFlareを介した同じDrupalインストールのいくつかのドメインで私にとってはうまく機能します。

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
  $base_url = $_SERVER["HTTP_X_FORWARDED_PROTO"] . '://' . $_SERVER['HTTP_HOST'];
} else {
  $base_url = 'http://' . $_SERVER['HTTP_HOST'];
}

このように、CloudFlareフレキシブルSSLでもうまく機能します。SSLありとなしの両方でサイトにアクセスできます。

(Cloudflareモジュールは必要ないようですが、有効にしても問題はありません。)


送信されたホストヘッダーを使用するだけの場合は、現時点で$ base_urlを設定しても意味がないと思います。指定しない場合、Drupalが自動的に検出するためです。
ブライアン

1Kランドバンのウェルコム(terug)...付属の特権を賢く使用してください!
Pierre.Vriens 2017

0

残念ながら、アクセスされたURLに関連するプロトコルの設定に関する問題は、サイトがキャッシュファイルを構築するときにのみ参照するため、サイトキャッシュを再構築するときに使用されるプロトコルに基づいてファイルとリソースへのすべての参照を作成することです。

したがって、httpsからキャッシュを再構築すると、すべてのリンクがhttpsになります。httpからサイトを再構築すると、すべてのリンクはhttpになります。

httpsからの再構築が最も効果的ですが、ブラウザは引き続き安全なコンテンツをブロックし、ユーザーがブロックされたコンテンツを手動で許可するよう要求する場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.