web-dev-qa-db-ja.com

WordPressのwp - adminのhttpsリダイレクトループ

私は私のWebサーバーとしてnginxを使用していて、私はhttpsを指すように設定ファイルを編集したので、私はhttpsにWordPress URL設定を変更し、また私のwp-configファイルにWordPress force ssl管理コードを追加しました" このウェブページにはリダイレクトループが含まれてい "

enter image description here

55
iamkingsleyf

あなたは あなたのwp-config.phpに$_SERVER['HTTPS'] = 'on';を追加しました

http://yoursite.comからhttps://yoursite.comに移行するには WP Migrate DB プラグインも使用する必要があります。

92
thaevok

私は同様の問題を抱えていて、私のwp-config.phpに次のスニペットを追加しました。

/** SSL */  
define('FORCE_SSL_ADMIN', true);  
// in some setups HTTP_X_FORWARDED_PROTO might contain  
// a comma-separated list e.g. http,https  
// so check for https existence  
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)  
    $_SERVER['HTTPS']='on';

提案されているように - コーデックスで 。これは、ロードバランサー(またはファイアウォール)の設定​​でSSLパススルーが有効になっている場合にのみ必要になります。つまり、TLS/SSL内でHTTP経由でサイトにアクセスすることはできますが、サーバーが受信する通信はHTTPのみです。そのためには、WordPressが$_SERVER設定配列でHTTPSをonに「設定」できるように、上記のヘッダが必要です。

46
Elias

私はまだコメント特権を持っていないので、この追加を別の答えとして投稿します。

wp-config.phpに以下を追加するためにエリアスによって提案された解決策は私のためにトリックをしました:

/** SSL */  
define('FORCE_SSL_ADMIN', true);  
// in some setups HTTP_X_FORWARDED_PROTO might contain  
// a comma-separated list e.g. http,https  
// so check for https existence  
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)  
    $_SERVER['HTTPS']='on';

しかし、それが私のためにうまくいったのは、I このファイルの他のすべての の前に置いてください。

10
Michael Jung

本のための別のバージョンは、ちょうどこれをwp-config.phpの一番上に加えるだけです

その理由は、ロードバランサや適切なhttps値を渡さないものがある可能性があるため、他の場所から取得してワードプレス用に偽造する必要があることです。

if ( (isset($_SERVER['HTTP_X_FORWARDED_PORT'] ) && ( '443' == $_SERVER['HTTP_X_FORWARDED_PORT'] ))
    || (isset($_SERVER['HTTP_CF_VISITOR']) && $_SERVER['HTTP_CF_VISITOR'] == '{"scheme":"https"}')) {
    $_SERVER['HTTPS'] = 'on';
}
7
Timo Huovinen

実は...私はこの問題を抱えていました、そして解決はとても簡単で恥ずかしいものでした。どういうわけか私のwp-adminフォルダが削除されたので、これと同じエラーメッセージが表示されることはありません。

何時間ものテストの後、私はこれを見て、ダウンロードして再度アップロードしたときには、いつものように動作しました。

それをみんな確認してください、それはそれほど単純であることができます。

0
emcolsson

5歳の質問...

OK、SSL証明書をインストールし、wp-cli.phar found here を使用してhttpであったすべてのリンクをhttpsに変更した後、このエラーが発生しました。

私はさまざまな設定を試しましたが、これを設定しない限り、これを解決するものはありませんでした:

define('FORCE_SSL_ADMIN', true); 
define('FORCE_SSL_LOGIN', true);

これに:

define('FORCE_SSL_ADMIN', false);
define('FORCE_SSL_LOGIN', false);

ログインページにアクセスできましたが、実際にはログインできませんでした。私は答え2を試しましたが、残念ながらそれも助けにはなりませんでした、次の変更を行うまで:

/** SSL */   
define('FORCE_SSL_ADMIN', true);
// in some setups HTTP_X_FORWARDED_PROTO might contain
// a comma-separated list e.g. http,https   
// so check for https existence   
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== true)  
     $_SERVER['HTTPS']='on';

何らかの理由で、私は理由がわからない-私は変更しなければならなかった

!== false

!== true

ホストとしてnginxを実行し、nginxユニットへのリバースプロキシを実行しています。

0
Ricky