Buclă de redirecționare https pentru wp-admin în WordPress
Folosesc nginx ca server web și am editat fișierul de configurare pentru a indica către https, așa că am schimbat setările URL-ului WordPress la https și am adăugat și codul WordPress force ssl admin în fișierul wp-config, dar continui să primesc eroarea "Această pagină web are o buclă de redirecționare"
Ai adăugat $_SERVER['HTTPS'] = 'on';
în wp-config.php?
De asemenea, ar trebui să folosești pluginul WP Migrate DB pentru a migra de la http://yoursite.com
la https://yoursite.com

Mulțumesc! Probabil că mi-ai economisit câteva ore în plus încercând să-mi dau seama de ce zona de administrare nu funcționa cu SSL.

este minunat, singura problemă este - cum instalezi un plugin dacă site-ul nu funcționează :) Știu că întotdeauna ar trebui să faci o copie de rezervă înainte de astfel de acțiuni, dar totuși. Soluția de mai jos a funcționat pentru mine :)

De ce funcționează asta? Am folosit deja instrumentul S&R al lui Interconnect. Ar trebui să am deja protocolul corect în baza de date.

instrucțiunea if
din documentație nu a funcționat pentru mine, așa că mereu setez $_SERVER['HTTPS'] = 'on';

După ce am adăugat $_SERVER['HTTPS']='on';
în wp-config.php, primesc mesajul Ne pare rău, nu aveți permisiunea de a accesa această pagină.
pe pagina /wp-admin
deși sunt autentificat ca administrator. Folosesc Cloudflare flexible SSL, așa că traficul HTTPS este trimis pe portul HTTP.

Trebuie să adăugăm if strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; }
înainte de require_once(ABSPATH . 'wp-settings.php');
așa cum se menționează aici: https://wordpress.stackexchange.com/questions/250240/setting-serverhttps-on-prevents-access-to-wp-admin#comment414886_250254 https://wordpress.stackexchange.com/questions/262194/cannot-login-to-wordpress-admin-with-ssl-terminated-load-balancer/263461#263461

Îmi pare rău să adaug încă un comentariu despre cum $_SERVER['HTTPS'] = 'on'; m-a salvat, dar într-adevăr a rezolvat toate problemele de redirectare și pentru mine. Am încercat fiecare modificare posibilă în nginx.conf, împreună cu remove_filter('template_redirect', 'redirect_canonical'); care a funcționat, dar doar pentru pagina principală. Linia $_SERVER['HTTPS'] = 'on' a rezolvat imediat totul. Mulțumesc!!!!

Mulțumesc pentru asta. A funcționat după 2 ore în care am încercat alte soluții.

+10000, mi-am tot bătut capul în perete întrebându-mă de ce SSL a stricat zona de administrare și URL-urile incluse în pagină

Mulțumesc mult! Ore întregi de căutare m-au adus în sfârșit în locul potrivit.

MULȚUMESC!! Acest lucru este esențial pentru Cloudflare și ar trebui să facă parte din tutorial.

Ești un geniu! Mulțumesc din suflet. Am petrecut atâtea ore încercând să rezolv asta. M-ai scos dintr-o buclă infinită. Mulțumesc!!

Am avut o problemă similară și am adăugat următorul fragment în wp-config.php
:
/** SSL */
define('FORCE_SSL_ADMIN', true);
// în unele configurații, HTTP_X_FORWARDED_PROTO poate conține
// o listă separată prin virgulă, de ex. http,https
// așa că verificăm existența lui https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
după cum este sugerat în Codex. Acest lucru va fi necesar doar în cazul în care este activată trecerea SSL în configurația load balancer-ului (sau firewall-ului). Adică, în timp ce puteți accesa site-ul prin HTTP în cadrul TLS/SSL, comunicarea pe care o primește serverul este doar HTTP. Pentru a compensa acest lucru, este necesar header-ul de mai sus, astfel încât WordPress să poată "seta" HTTPS la on
în array-ul de configurare $_SERVER
.

Aceasta este o soluție excelentă în special pentru cei care folosesc un load balancer. Găzduiam acest site folosind Dokku (un clone Heroku pe care îl poți găzdui singur) și aveam probleme cu încărcarea resurselor statice și bucla de redirecționare wp-admin. Dokku folosește și el un reverse proxy nginx pentru a redirecționa traficul primit pe portul 443 către portul 80, iar această soluție a rezolvat problema.

A trebuit să pun doar $_SERVER['HTTPS'] = 'on';
deoarece HTTP_X_FORWARDED_PROTO nu există nici măcar în setările de pe serverul clientului meu :|

Aceasta a rezolvat și problema "Too many redirects", deoarece site-ul meu se află în spatele unui load balancer pe AWS.

Cred că este important să adaug la acest răspuns soluția pentru fișierul .htaccess în astfel de cazuri: https://stackoverflow.com/questions/36748110/htaccess-too-many-redirects-when-trying-to-force-https, verificați răspunsul lui @harshal-lonare.

Deoarece încă nu am privilegiul de a comenta, voi posta această completare ca un alt răspuns:
Soluția propusă de Elias, de a adăuga următoarele în wp-config.php
, a funcționat pentru mine:
/** SSL */
define('FORCE_SSL_ADMIN', true);
// în unele configurații HTTP_X_FORWARDED_PROTO poate conține
// o listă separată prin virgulă, de ex. http,https
// așa că verificăm existența https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
Totuși, a funcționat doar atunci când am plasat acest cod înainte de orice altceva în acest fișier!

Exact asta era problema mea. Am pus acestea la sfârșitul fișierului și nu funcționa. Eram pe punctul de a reconstrui site-ul de la zero. Le-am mutat la început și hop, problema rezolvată. Mulțumesc, Mulțumesc!!

Această soluție este excelentă dacă folosești un SSL flexibil în spatele unui DNS proxy precum Cloudflare. Mulțumesc.

Confirm că funcționează. Mulțumesc mult, asta rezolvă multe probleme pe care le aveam cu API-uri și IFrame-uri. Site-ul nu are HTTPS activat, dar avem nevoie ca unele pagini să îl aibă. WordPress ar trebui să aibă această opțiune ca setare implicită...

PS - acel cod poate fi oriunde dar trebuie să fie înainte de require_once( ABSPATH . 'wp-settings.php' );
care se află la sfârșitul fișierului.

O altă versiune pentru arhivă, adăugați acest cod la începutul fișierului wp-config.php
Motivul este că pot exista echilibrare de sarcină sau alte elemente care nu transmit corect valoarea https, așa că trebuie să o obțineți din altă parte și să o simulați pentru 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';
}

Tocmai am folosit această soluție pentru o instalație WordPress 5.5.1 care rulează în spatele unui HAProxy pe un firewall pfsense. Alte soluții enumerate nu păreau să funcționeze corect, cel puțin fără unele ajustări la HAProxy și header-ul pe care îl trimite.

Întrebare de acum 5 ani...
Bine, am avut această eroare, după ce am instalat certificatul SSL și am schimbat toate link-urile care erau http
în https
folosind wp-cli.phar găsit aici.
Am încercat diverse configurații și niciuna nu a rezolvat problema, decât dacă am setat asta:
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
la aceasta:
define('FORCE_SSL_ADMIN', false);
define('FORCE_SSL_LOGIN', false);
Asta mi-a permis să accesez pagina de log-in, dar apoi nu am putut să mă autentific efectiv. Am încercat a doua soluție, dar din păcate nu a ajutat, până când am făcut următoarea modificare:
/** SSL */
define('FORCE_SSL_ADMIN', true);
// în unele configurații HTTP_X_FORWARDED_PROTO poate conține
// o listă separată prin virgulă, de ex. http,https
// deci verificăm existența lui https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== true)
$_SERVER['HTTPS']='on';
Din nu știu ce motiv - a trebuit să schimb
!== false
în
!== true
Rulez nginx ca gazdă și reverse proxy către nginx unit... Dacă cineva are vreo idee de ce a funcționat asta, vă rog să-mi spuneți

De fapt... Am avut această problemă și soluția a fost destul de ușoară și jenantă. Cumva, pe gazda web, folderul meu wp-admin a fost șters și, prin urmare, nu exista wp-admin cu același mesaj de eroare.
După ore întregi de testare a atât de multor metode diferite, am văzut acest lucru și când l-am descărcat și încărcat din nou, totul a funcționat normal.
Verificați, băieți, poate fi atât de simplu.

Am avut aceeași problemă când am găzduit site-ul meu pe Azure webapp service Linux.
Încearcă acest plugin. Ai grijă când este activ, funcționează. https://wordpress.org/plugins/jsm-force-ssl/
Acest plugin utilizează filtre native WordPress, în loc de buffer-ul de ieșire PHP, pentru o fiabilitate, performanță și compatibilitate cu caching maximă (acest plugin nu afectează performanța cache-ului), împreună cu redirecționări 301 permanente pentru cel mai bun SEO (redirecționările 301 sunt considerate cele mai bune pentru SEO atunci când treci de la HTTP la HTTPS).
Onorează variabilele proxy / load-balancing pentru medii de găzduire mari:
HTTP_X_FORWARDED_PROTO HTTP_X_FORWARDED_SSL Cerințe:
Serverul tău web trebuie să fie configurat cu un certificat SSL și să poată gestiona cereri HTTPS.
Pur și simplu activează plugin-ul și ai terminat:
Nu există setări de plugin de ajustat și nu se fac modificări la configurația WordPress — pur și simplu activează sau dezactivează plugin-ul pentru a activa / dezactiva filtrele și redirecționările dinamice.

Am întâmpinat aceeași problemă, așa că după ore întregi de cercetare și ajustări, am reușit să o rezolv. Voi împărtăși tot ce am făcut, deoarece nu sunt sigur dacă toate acțiunile mele au contribuit la soluționare.
În primul rând, găzduiesc site-ul meu WordPress pe cPanel, așa că am folosit instrumentul Softaculous din cPanel pentru a actualiza versiunea WordPress.
În al doilea rând, am actualizat baza de date WordPress.
(Am observat că fișierul meu .htaccess din directorul rădăcină al site-ului a fost actualizat cu adăugarea RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
)
Apoi am verificat fișierul .htaccess din folderul wp-admin și am văzut aceste comenzi:
Order Allow,Deny
Deny from all
Am citit pe site-ul WordPress că aceste comenzi sunt menite să prevină accesul web la fișierele din acel folder, dar acesta nu era un comportament de care aveam nevoie (cred).
Așa că le-am comentat și am reușit să încarc secțiunea de administrare.

Mulțumesc, asta a funcționat pentru mine. Mi-a făcut ziua mai bună
/** SSL */
define('FORCE_SSL_ADMIN', true);
// în unele configurații HTTP_X_FORWARDED_PROTO poate conține
// o listă separată prin virgulă, de ex. http,https
// așa că verificăm existența https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

Asta e doar răspunsul lui Elias ?
