Buclă de redirecționare https pentru wp-admin în WordPress

3 dec. 2014, 07:57:53
Vizualizări: 103K
Voturi: 79

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"

Eroare buclă de redirecționare în browser Chrome

0
Toate răspunsurile la întrebare 10
17
137

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

25 feb. 2015 21:01:26
Comentarii

Aș da 1000 de voturi pozitive pentru asta!

Sheharyar Sheharyar
17 ian. 2016 23:56:07

Din nu știu ce motiv, acest pas vital este adesea omis.

Tania Rascia Tania Rascia
27 ian. 2016 08:47:17

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.

Sledge Hammer Sledge Hammer
20 feb. 2016 19:42:04

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 :)

Timur Gafforov Timur Gafforov
22 sept. 2016 11:09:01

uau! $_SERVER['HTTPS'] = 'on'; m-a salvat!

PJunior PJunior
3 feb. 2017 19:13:36

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.

Jeff Jeff
15 feb. 2017 22:28:35

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

lewis lewis
13 apr. 2017 19:38:53

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.

baptx baptx
21 dec. 2017 14:41:11

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

baptx baptx
21 dec. 2017 14:41:50

Î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!!!!

Daniel Daniel
15 mar. 2018 04:30:44

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

hypern00b hypern00b
31 mar. 2018 06:25:42

+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ă

Wobbles Wobbles
17 mai 2018 16:34:30

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

Foxan Ng Foxan Ng
6 iun. 2018 08:34:34

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

Sprachprofi Sprachprofi
5 iul. 2018 21:08:38

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!!

SequenceDigitale.com SequenceDigitale.com
22 iul. 2018 20:18:14

Mulțumesc mult! $_SERVER['HTTPS'] = 'on'; a funcționat pentru mine.

Komal Komal
20 oct. 2018 09:18:40

proxy_set_header X-Forwarded-Proto https; a funcționat și pentru mine. Mulțumesc pentru răspuns.

oliver nadj oliver nadj
18 oct. 2023 14:32:16
Arată celelalte 12 comentarii
6
76

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.

16 mar. 2016 22:27:58
Comentarii

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.

Zach McCormick Zach McCormick
6 iun. 2016 17:54:57

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 :|

Tom Roggero Tom Roggero
23 ian. 2017 19:11:44

A rezolvat perfect problema mea când foloseam un load balancer AWS.

Josh Josh
12 apr. 2017 18:27:46

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

voam voam
1 nov. 2017 21:24:32

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.

Gustavo Jantsch Gustavo Jantsch
5 oct. 2018 18:29:29

Soluție elegantă. Mulțumesc!!!

GTodorov GTodorov
13 iun. 2023 00:34:28
Arată celelalte 1 comentarii
6
18

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!

14 sept. 2017 11:52:27
Comentarii

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!!

Dean Poulin Dean Poulin
3 feb. 2018 04:19:14

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

Stefan P Stefan P
16 feb. 2018 07:44:24

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ă...

Andy Andy
25 apr. 2018 17:25:20

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.

Damodar Bashyal Damodar Bashyal
20 sept. 2019 03:42:21

Funcționează, mulțumesc

Mohammed Tawfik Mohammed Tawfik
28 apr. 2020 03:22:35

funcționează și pentru mine

Md. Amanur Rahman Md. Amanur Rahman
10 iun. 2020 12:39:30
Arată celelalte 1 comentarii
2

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';
}
21 feb. 2017 14:33:57
Comentarii

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.

Swift Swift
24 sept. 2020 07:37:48

Niciuna dintre celelalte sugestii nu a funcționat, doar aceasta. Mulțumesc mult!

Mahbub Mahbub
16 nov. 2020 19:26:32
1

Î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

19 iul. 2019 14:15:31
Comentarii

Mi-ai salvat ziua. Ești cea mai minunată persoană din lume.

mobdevkun mobdevkun
16 iul. 2024 22:16:50
0

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.

10 feb. 2019 16:22:18
0

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.

7 mai 2020 17:25:39
0

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.

19 feb. 2021 15:32:05
0

Configurează CloudFlare pentru https only și în wp-config setează

define('FORCE_SSL_ADMIN', false);
define('FORCE_SSL_LOGIN', false);
9 iul. 2021 11:39:40
1

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';
13 feb. 2024 16:14:15
Comentarii

Asta e doar răspunsul lui Elias ?

Rup Rup
13 feb. 2024 19:22:31