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


60

私はウェブサーバーとしてnginxを使用しており、httpsを指すように構成ファイルを編集しているので、WordPressのURL設定をhttpsに変更し、WordPressの強制SSL管理コードをwp-configファイルに追加しましたが、エラーが発生し続けます「このWebページにはリダイレクトループがあります

ここに画像の説明を入力してください

回答:


98

wp-config.phpに追加$_SERVER['HTTPS'] = 'on';ましたか?

また、使用すべきWPの移行のDBからの移行プラグインをhttp://yoursite.comしますhttps://yoursite.com


9
私はあなたに1000の賛成票を差し上げます!
-Sheharyar

5
何らかの理由で、この重要なステップが含まれないことがよくあります。
タニアラッシア

4
ありがとうございました!これにより、管理領域がSSLで動作しなかった理由を理解するために、さらに数時間を節約できたと思います。
スレッジハンマー

4
うわー!$ _SERVER ['HTTPS'] = 'on'; 助かりました!
Pジュニア

2
なぜこれが機能するのですか?既にインターコネクトのS&Rツールを使用しました。データベースには適切なプロトコルが既にあるはずです。
ジェフ

51

私は同様の問題を抱えていて、次のスニペットを自分に追加しました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';

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


2
これは、ロードバランサーを使用するユーザーにとって特に優れたソリューションです。Dokku(Herokuのホストクローン)を使用してこれをホストしており、静的リソースの読み込みとwp-adminリダイレクトループに問題がありました。Dokkuはnginxリバースプロキシも実行して、着信443トラフィックをポート80に転送します。これにより問題が修正されます。
ZachM

3
$_SERVER['HTTPS'] = 'on';HTTP_X_FORWARDED_PROTOがクライアントのサーバーの設定にも含まれていないため、私はただそれを置く必要がありました:|
トムRoggero

1
AWSロードバランサーを使用する際の問題を完全に修正しました。
ジョシュ

私のサイトはAWSのロードバランサーの背後にあるため、これにより「リダイレクトが多すぎる」という問題も修正されました。
-voam

このような場合の.htaccessファイルの修正をこの回答に追加することが重要だと思います:stackoverflow.com/questions/36748110/…、@ harshal-lonareの回答を確認してください。
グスタボジャンチュ

11

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

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';

ただし、このファイルで他のすべての要素の前配置した場合にのみ機能しました!


1
これがまさに私の問題でした。これらをファイルの最後に配置しましたが、機能していませんでした。サイトをゼロから再構築する準備が整いました。それらを上部に移動し、問題を修正しました。ありがとうありがとう!!
ディーン・ポーリン

このソリューションは、CloudflareのようなプロキシDNSの背後で柔軟なSSLを使用している場合に最適です。ありがとうございました。
ステファンP

動作確認済み。本当にありがとうございます。これにより、APIとIFrameで発生した多くの問題が修正されます。このサイトではHTTPSが有効になっていませんが、有効にするためにはいくつかのページが必要です。Wordpressにはデフォルトでこれが設定されているはずです
Andy

参考までに、このコードはどこにでも配置できますrequire_once( ABSPATH . 'wp-settings.php' );が、ファイルの最後に配置する必要があります。
ダモダールバシャール

7

書籍の別のバージョン、これを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';
}

0

実際に...私はこの問題を抱えていましたが、解決は非常に簡単で恥ずかしかったです。どういうわけか、Webホストで私のwp-adminフォルダーが削除されたため、この同じエラーメッセージのwp-adminはありません。

何時間にもわたってさまざまな方法でテストした後、私はこれを見ただけで、ダウンロードして再度アップロードすると、すべて正常に機能しました。

それをみんなチェックしてください、それはとても簡単です。


0

5歳の質問...

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

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

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ユニットへのリバースプロキシを実行しています...それがうまくいった理由が誰にもわからない場合は、教えてください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.