web-dev-qa-db-ja.com

HTTPSを使用したstyle.cssとJqueryのロード

私たちはいくつかの環境を持っていて、私たちはちょうどワードプレスを使い始めたところです(開発、品質保証、事前生産、生産など...)。私たちはhttpsをより低い環境で有効にしていないし、すべてが順調に働いています。当社のprod環境では、サイトはすべてのトラフィックをhttpsにリダイレクトします。

最初の問題はクロムだけにあるようです。 Chromeはhttps以外のものをページにロードすることを拒否します。私はどのようにWordPressにhttps経由でjqueryまたはstyles.css(私のテーマから)をロードさせるのかわからない(詳細は下記)。

またHTTPSに関する2番目の問題は、HTTPSを使用する環境ではワードプレスにログインできないことです。ログイン画面が表示されたら(sitename.com/wp-admin)、期待どおりにwp-loginにリダイレクトされますが、ユーザー名/パスワードを入力するとページが更新されるだけです。エラーなし(console/firebugとhttpfoxをチェックしてもエラーが見つかりませんでした)。

私たちはそれをサポートする環境で多くの問題を抱えているので、私たちは一般的にhttpsで何か悪いことをしていることを知っています。私はたくさんのグーグルをやってきましたが、驚くべきことにHTTPSとワードプレスを使うことについてあまり思いついていません。 HTTPS経由でjqueryをロードする方法、およびhttpsワードプレスのインスタンスにログインする方法についての質問に対する回答とは別に、ワードプレスでHTTPSを使用する方法に関するよいリンクがあります。私が見つけたほとんどすべてのものはプラグインWordPress HTTPSを使うことを示しています、そして私たちはそれを試みるつもりですが、それが私たちの問題の全てを解決するかどうか私はわかりません。

注*私のfunctions.phpでは、Enqueueを使用してJSおよびCSSファイルを適切な方法でロードしています。これらのロードでは相対パスを使用しています。//sitename.com/bla/blaは正常に機能します。私はheader.phpを使ってjqueryをロードしています。styles.cssは私のテーマロードの一部として自動的にロードされるので、HTTPS経由でロードするように設定する方法も、それが正しい修正方法でもないこれらの問題。 (jQueryはCDNではなくローカルファイルシステムからロードしています)。任意の助けは大歓迎です。前もって感謝します。

4
RAC

私たちは解決策を見つけました、そしてそれは私たちの環境がどのように設定されたかの問題におけるように純粋に環境的であるように見えます。それが起こるとき、私たちのMySQLサーバーと私たちの実際のサーバーは同じボックス上にはなく、wordpressはMySQLボックスにルーティングされたリクエストと実際のコードを含むボックスの違いを明確に知る必要があります。そのため、どのデータベースエントリがSQLを指し、どのデータベースエントリがWebサーバーを指すのかを突き止めることになりました。

ログインできるように環境を設定する方法を考え出したら、HTTPSプラグインを有効にして、通常はブロックされた非HTTP要求のクロムの問題を修正したサイトをロードできました。

0
RAC

あなたはロードバランサの背後にいるので(上のコメントで確認されています)、あなたのWordPressのインストールは - is_ssl()関数を使ってSSLを検出することはできません URI.

HTTP_X_FORWARDED_PROTOサーバー変数をサポートするロードバランサを使用している場合は、wp-config.phpファイルにこのスニペットを追加することで問題を解決できます。

// Amazon AWS Elastic Load Balancer, CloudFlare, and some others
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS']='on';

Network Solutionsでホスティングするには不運な場合は、まず机に向かって頭を倒してから、このGistを既にアクティブになっているプラ​​グインにしてみてください(adminにログインできないため新しいプラグインをアクティブにできないため) ): https://Gist.github.com/webaware/4688802

実際には、SSLを使わないように強制する前に、SSLを使わないように管理者に強制し、ログインさせ、必要なプラグインをインストールしてからtest SSL経由でインストールをテストさせるべきです。これをあなたのwp-config.phpファイルに追加し、あなたの実サーバに合うようにWP_SITEURLWP_HOMEを変更してください。

define('FORCE_SSL_LOGIN', false);
define('FORCE_SSL_ADMIN', false);
define('WP_SITEURL', 'http://example.com/');
define('WP_HOME', 'http://example.com/');
4
webaware

ほとんどのSSLの問題は、CSS/JSをロードするためにプラグイン/テーマが間違ったコードを使用していることが原因です。

  • WordPressの一般設定で、WordPressのアドレス(URL)とサイトのアドレス(URL)をHTTPからHTTPSに変更します。管理者にアクセスできない場合は、wp-config.phphttp://codex.wordpress.org/Editing_wp-config.php で変更できます。

  • あなたのテーマとプラグインに適切なURLパスを使用してください: http://codex.wordpress.org/Determining_Plugin_and_Content_Directories 例えば、WP_PLUGIN_URLのハードコーディングはplugin_dir_urlとは対照的に機能しません。これらの関数は、サイトがSSL対応であるかどうかをチェックする時間があるのに対し、定数はそうではないので、一般にSSLに優しいものです。

  • Admin/loginには、wp-config.phpを使ってSSLを強制することができます。

    ログイン:define('FORCE_SSL_LOGIN', true);

    管理者:define('FORCE_SSL_ADMIN', true);

もちろん、ハードコーディングされたアセットは、アセットを誤ってロードする問題またはプラグイン/テーマになります。

もしあなたのサーバーがlibssh2を持っているなら、あなたはSSLを通してあなたのテーマとプラグインを更新することもできます、あなたはport#とAuthキーを定義することもできます。これが有効になっている場合は、管理者設定に魔法のように表示されるだけのものを定義する必要はありません。

3
Wyck

OK!それは私の前にそのように起こった。あなたのjqueryファイルが正しくロードされていることを確認してから、プラグイン依存のjavascriptファイルを再確認してください。 WordPressにはjsファイルをロードする方法がいくつかあります。再度、デフォルトのワードプレスjqueryファイルとカスタムjqueryバージョンファイルをロードしないようにします。あなたのHTTPの問題については、彼らがHTTPのためのよりスマートな方法を使っているhtml5boilerplate.comを読んでください。コアファイルをハックしすぎないでください。

0
por