WordPress wp-admin https redirect loop

60

Saya menggunakan nginx sebagai server web saya dan saya telah mengedit file konfigurasi untuk menunjuk ke https, jadi saya mengubah pengaturan url WordPress ke https dan juga menambahkan kode admin ssl gaya WordPress ssl ke file wp-config saya tetapi saya tetap mengalami kesalahan " Halaman web ini memiliki loop pengalihan "

masukkan deskripsi gambar di sini

iamkingsleyf
sumber

Jawaban:

98

Anda telah menambahkan $_SERVER['HTTPS'] = 'on';ke wp-config.php Anda ?

Anda juga harus menggunakan plugin WP Migrate DB untuk bermigrasi dari http://yoursite.comkehttps://yoursite.com

thaevok
sumber
9
Saya akan memberi Anda 1000 upvotes untuk ini!
Sheharyar
5
Untuk beberapa alasan, langkah vital ini seringkali tidak termasuk.
Tania Rascia
4
Terima kasih! Itu mungkin menyelamatkan saya beberapa jam lagi untuk mencari tahu mengapa area admin tidak bekerja dengan SSL.
Sledge Hammer
4
Wow! $ _SERVER ['HTTPS'] = 'on'; menyelamatkan saya!
PJunior
2
Mengapa ini bekerja? Saya sudah menggunakan alat S&R Interconnect. Saya seharusnya sudah memiliki protokol yang tepat dalam database.
Jeff
51

Saya memiliki masalah serupa dan baru saja menambahkan cuplikan berikut ke 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';

seperti yang disarankan dalam Codex . Ini hanya akan diperlukan jika ada pengaturan SSL yang diaktifkan pada pengaturan load balancer (atau firewall) Anda. Berarti bahwa sementara Anda dapat mengakses situs melalui HTTP dalam TLS / SSL, komunikasi yang diterima server Anda hanya HTTP. Untuk menjelaskannya, header di atas diperlukan agar WordPress dapat "mengatur" HTTPS ke ondalam $_SERVERarray konfigurasi.

Elias
sumber
2
Ini adalah solusi tepat bagi siapa saja yang menggunakan penyeimbang beban. Saya hosting ini menggunakan Dokku (klon host-it-yourself dari Heroku) dan mengalami masalah dengan pemuatan sumber daya statis dan loop pengalihan wp-admin. Dokku juga melakukan proxy reverse nginx untuk meneruskan lalu lintas 443 yang masuk ke port 80 dan ini memperbaiki masalah.
ZachM
3
Saya harus meletakkannya $_SERVER['HTTPS'] = 'on';karena HTTP_X_FORWARDED_PROTO bahkan tidak ada dalam pengaturan di server klien saya: |
Tom Roggero
1
Memperbaiki masalah saya dengan sempurna saat menggunakan load balancer AWS.
Josh
Ini juga memperbaiki "Terlalu banyak masalah pengalihan" karena situs saya berada di belakang load balancer di AWS.
voam
Saya pikir penting untuk menambahkan jawaban ini perbaikan untuk file .htaccess untuk kasus-kasus seperti: stackoverflow.com/questions/36748110/… , periksa @ harshal-lonare jawaban.
Gustavo Jantsch
11

Karena saya belum memiliki hak komentar, saya akan memposting tambahan ini sebagai jawaban lain:

Solusi yang diusulkan oleh Elias, untuk menambahkan yang berikut wp-config.php, melakukan trik untuk saya:

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

Namun, itu hanya bekerja untuk saya ketika saya meletakkannya di atas yang lainnya di file ini!

Michael Jung
sumber
1
Persis seperti itulah masalah saya. Saya telah meletakkan ini di akhir file dan tidak berfungsi. Saya siap membangun kembali situs saya dari awal. Pindah mereka ke atas dan bam, masalah diperbaiki. Terima kasih terima kasih!!
Dean Poulin
Solusi ini sangat bagus jika Anda menggunakan SSL yang fleksibel di belakang DNS proxy seperti Cloudflare. Terima kasih.
Stefan P
Dikonfirmasi bekerja. Terima kasih banyak, ini memperbaiki banyak masalah yang kami miliki dengan API dan IFrames. Situs ini tidak mengaktifkan HTTPS, tetapi kami membutuhkan beberapa halaman untuk mengaktifkannya. Wordpress seharusnya memiliki ini sebagai pengaturan secara default ...
Andy
FYI - kode itu bisa di mana saja tetapi harus sebelum require_once( ABSPATH . 'wp-settings.php' );yang ada di akhir file.
Damodar Bashyal
7

Versi lain untuk buku-buku, tambahkan saja ini ke atas wp-config.php

Alasannya adalah mungkin ada load balancers atau sesuatu yang tidak memberikan nilai https yang tepat, jadi Anda harus mengambilnya dari tempat lain dan memalsukannya untuk wordpress.

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';
}
Timo Huovinen
sumber
0

Sebenarnya ... Saya punya masalah ini dan penyelesaiannya cukup mudah dan memalukan. Entah bagaimana di webhost, folder wp-admin saya dihapus dan karenanya tidak ada wp-admin dengan pesan kesalahan yang sama.

Setelah berjam-jam pengujian berbagai cara saya hanya melihat ini dan ketika diunduh dan diunggah lagi semuanya bekerja seperti biasa.

Lihat ini teman-teman, bisa sesederhana itu.

emcolsson
sumber
0

Pertanyaan berumur 5 tahun ...

Oke, saya punya kesalahan ini, setelah menginstal sertifikat SSL saya dan mengubah semua link yang httpke httpsmenggunakan wp-cli.phar ditemukan di sini .

Saya mencoba berbagai konfigurasi dan sepertinya tidak ada yang menyelesaikan ini, kecuali saya atur ini:

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

untuk ini:

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

Itu memungkinkan saya untuk menekan halaman login, tetapi kemudian tidak dapat benar-benar masuk. Saya mencoba menjawab dua tetapi sayangnya itu tidak membantu, Sampai saya melakukan perubahan berikut:

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

Untuk beberapa alasan, saya tidak tahu mengapa - saya harus mengubah

! == salah

untuk

! == benar

Saya menjalankan nginx sebagai host dan membalikkan proxy ke unit nginx ... Jika ada yang tahu mengapa itu berhasil, Tolong beri tahu saya

Ricky
sumber