8

ドキュメント ヘッドの css リンクのパスに {site_url} タグを使用する EE サイトにアクセスした場合、http ではなく https と入力すると、サイトが CSS ファイルを読み込めないことがわかりました。

私は htaccess ファイルを使用して http を強制することでこれを回避しましたが、両方を機能させるために変更できる EE 内の設定があるかどうか疑問に思いました。

これは Chrome と IE でのみ発生しました。おそらく、ブラウザの設定によってセキュリティが保護されるようになっていると思います。

4

6 に答える 6

7

以前、この問題について大きな助けを得ました。今でもお役に立てれば幸いです。

于 2012-11-02T16:00:08.190 に答える
6

資産にプロトコル相対 URL を使用できることを知っている人はほとんどいません。

例:

<link rel="stylesheet" href="//www.site.com/site.css">
<script type="text/javascript" src="//www.site.com/site.js"></script>

ブラウザーが HTTPS を介して SSL でページを表示している場合、ブラウザーは https プロトコルを使用してそのアセットを要求し、それ以外の場合は HTTP を使用して要求します。

これにより、IE で「このページにはセキュアなアイテムと非セキュアなアイテムが含まれています」というひどいエラー メッセージが表示されなくなり、すべてのアセット リクエストが同じプロトコル内に保持されます。

詳細はこちらから:

スキームのない相対 URL (http: または https:) は、RTF 3986: セクション 4.2 に従って有効です。クライアントがそれで窒息した場合、RFC で指定された URI 構文に準拠していないため、クライアントの責任です。

あなたの例は有効であり、うまくいくはずです。私自身、トラフィックの多いサイトでこの相対 URL 方式を使用しましたが、苦情はありませんでした。また、Firefox、Safari、IE6、IE7、Opera でサイトをテストしています。これらのブラウザはすべてその URL 形式を認識します

于 2012-11-02T20:23:23.650 に答える
5

CSS と JS をロードするとき、ドメインを使用することはありません。相対的に設定するだけです。例えば:

<link rel="stylesheet" href="/layout/styles/layout.css" >

これを試してみると、うまくいきますか?

于 2012-11-02T16:13:05.030 に答える
3

ファイルで PHP を使用してsystem/expressionengine/config/config.php、プロトコルを含む {site_url} 構成を動的に設定できます。このようなもの:

// Detect protocol and server host
$protocol = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https://" : "http://";
$base_url = $protocol . $_SERVER['HTTP_HOST'];

// Set EE index page
$config['index_page'] = "";

// Set base and site URL
$config['base_url'] = $base_url . "/" . $config['index_page'];
$config['site_url'] = $config['base_url'];

テーマ パス、さまざまな画像パス、アップロード パスなどをすべて .NET の基礎から作成できますconfig.php。しかし、タグとタグ$config['site_url']の出力に影響を与えるものです。{path=""}{stylesheet}

その他のアイデアについては、NSM の Config Bootstrap ファイルまたは複数サーバー用の ExpressionEngine の構成に関する記事を参照してください。で設定できるすべてのパスについては、 EE2 Config Overridesconfig.phpを参照してください。

于 2012-11-02T17:32:16.610 に答える
1

全て、

Apache と Config.php ファイルを使用して URL を書き換え、ブラウザから「非 SSL コンテンツの警告」が表示されないようにする方法を次に示します。テンプレートで {path} 変数と {stylesheet} 変数をまだ使用しています:)

Apache の htaccess ファイル:

# Set an Apache 'site_url' variable to http when accessed via http:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ - [E=site_url:http://mysite.com]


# Set Apache 'site_url' variable to https when accessed via https
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ - [E=site_url:https://mysite.com]

次に、system/expressionengine/config.php で

次の 2 行をコードに追加します (構成ファイルの他の場所でこれらの変数を設定していないことを確認してください)。

$config['base_url'] = $_SERVER["site_url"];
$config['site_url'] = $_SERVER["site_url"];

私が理解しているように、site_url 変数は、EE が EE の {stylesheets} と {paths} に使用するものです。

ことわざの「最後に 1 つ」:

それでも非 SSL 警告が表示される場合は、ソースを表示して、ソースで「http://」を検索してください。これらが犯人です。これらは、base_url/site_url 変数で設定されていないハードコードされたリンクです。

投稿/テンプレート/変数/スニペットでこれらの http 呼び出しを見つけ、それらの呼び出しを単純な // に置き換える必要があります。
だからへの呼び出し

http://example.com/some_file.html

次のようになります。

//example.com/some_file.html.  

これは、絶対 URL と相対 URL で機能します。

これは、EE ファイルのアップロード ディレクトリに設定したパスにも当てはまります。これらのディレクトリのURLを次のように変更してください

//example.com/path/to/your/upload/directory

そして出来上がり、あなたは行く準備ができているはずです:)

于 2013-02-21T07:17:15.530 に答える
1

私はNginxを使用しています。

理由はわかりませんが、相対 URL ( CreateSean が言ったよう/ドメインで文字列を開始するため、Deviarte が言ったようにプロトコルで文字列を開始するため)ではなく絶対 URL (フルパス) を使用すると、さまざまなブラウザーでリソースの読み込みが大幅に高速になります。 (または、相対 URL を使用すると読み込みが遅くなるのでしょうか?私にはわかりません)。エルゴ、彼らのソリューション/プラクティスのどちらも(私が以前に行っていたことと今でも行っていることの両方)、最近の私の環境には適していません。//

代わりに、config.php で次のことを行いました。

$config['base_url'] = $_SERVER["scheme_url"];
$config['site_url'] = $_SERVER["scheme_url"];

まだ存在しない場合は、PHP に scheme_url を提供する必要があるかもしれないことに注意してください。私のように php-fpm を使用している場合は、nginx サイト構成で必要な場合に、これを構成に追加するだけです。

    fastcgi_param scheme_url "$scheme://$host/";

編集:

bootstrap/configs を見回すと、構成変数の先頭にプロトコルを追加する方法を使用する人もいます (上記の unexplainedBacn によるコメントなど)。デフォルトでは、Nginx には HTTPS サーバー変数はありません。ssl の下の php の仮想ホスト構成で、次を追加します。

    fastcgi_param   HTTPS   on; 
于 2012-11-08T18:52:56.983 に答える