httpとhttpsの両方からアクセスできるサイトがあります。で定義されていないセキュリティレビューの苦情base_url
が表示されsettings.php
ます。
しかし、それをとして定義しhttp://example.com
、すべてのキャッシュをフラッシュすると、httpsのテンプレートがレンダリングされません。
私がコメントアウトした場合$base_url
の行settings.php
すべてが正常に戻ってきます。
この問題を解決するにはどうすればよいですか?
httpとhttpsの両方からアクセスできるサイトがあります。で定義されていないセキュリティレビューの苦情base_url
が表示されsettings.php
ます。
しかし、それをとして定義しhttp://example.com
、すべてのキャッシュをフラッシュすると、httpsのテンプレートがレンダリングされません。
私がコメントアウトした場合$base_url
の行settings.php
すべてが正常に戻ってきます。
この問題を解決するにはどうすればよいですか?
回答:
私は運が良かった:
$base_url = '//mysite.com';
また、セッションCookieを維持するために、通常は以下を追加します。
$conf['https'] = TRUE;
これにより、混合モードが可能になります。
url('path', array('absolute'=>TRUE));
がとしてレンダリングされるため、これは不正解です//mysite.com/path
。これよりも@colanのアプローチを使用する必要があります。
これは、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モジュールは必要ないようですが、有効にしても問題はありません。)
残念ながら、アクセスされたURLに関連するプロトコルの設定に関する問題は、サイトがキャッシュファイルを構築するときにのみ参照するため、サイトキャッシュを再構築するときに使用されるプロトコルに基づいてファイルとリソースへのすべての参照を作成することです。
したがって、httpsからキャッシュを再構築すると、すべてのリンクがhttpsになります。httpからサイトを再構築すると、すべてのリンクはhttpになります。
httpsからの再構築が最も効果的ですが、ブラウザは引き続き安全なコンテンツをブロックし、ユーザーがブロックされたコンテンツを手動で許可するよう要求する場合があります。