web-dev-qa-db-ja.com

そのプロトコルを使用してサイトにアクセスするときに、リンクがhttps://を使用しないのはなぜですか?

問題

Https(許可されている唯一のプロトコル)を介してサイトにアクセスします。コンテンツは取得しますが、CSSや画像などは取得しません。

Drupalは、httpへのリンクを含むhttpsリクエストに応答してページを作成していますこれらのリソースですが、httpsを使用する必要があります。

私がやったこと

サイトを開発サーバーにコピーしました。サイトはロードされ、基本的には正常に機能します-ログインできます。たとえば、すべてのリンクdrupalが生成するものはhttpです。コピー元のサイトはhttpsでも実行されます。サイトはhttpには存在しません(Forbiddenエラーが発生するだけです)。drush cc allを使用しました。

Apacheが機能している-私はサイトにアクセスできます。 .htaccessは機能しています(たとえば、クリーンなURLが機能します)。

サーバーに他のvhostもあるため、SNIを使用してサイトにアクセスしていますが、最新のFirefoxを使用してのみサイトにアクセスしています(それは開発サイトであり、私が唯一の開発者であるため、他の誰も使用しません)。 。

私はこれを何十回もやったことがあり、かなり困惑しています! Drupalリクエストがhttps経由で来たことに気付かないのはなぜですか?

修正

.htaccessには次のように言うことがわかりました:

/* Base URL (optional).                                                        

If Drupal is generating incorrect URLs on your site, which could            
be in HTML headers (links to CSS and JS files) or visible links on pages    
(such as in menus), uncomment the Base URL statement below (remove the      
leading hash sign) and fill in the absolute URL to your Drupal installation.

案の定、$base_url = 'https://example.com';を入れて修正しました。

しかし、なぜこれが必要なのですか?

2
artfulrobot

私は同様の問題があり、$base_url = ''。静的コンテンツの問題を修正します。 Drupalは、絶対ではなく相対URLを生成します。これはとにかく正しいことです。しかし、これはupdate.php何らかの理由で(7.38を実行)。

1
dtoubelis