WordPress wp-admin การเปลี่ยนเส้นทาง https ของผู้ดูแลระบบ


60

ฉันใช้ nginx เป็นเว็บเซิร์ฟเวอร์ของฉันและฉันได้แก้ไขไฟล์การกำหนดค่าให้ชี้ไปที่ https ดังนั้นฉันจึงเปลี่ยนการตั้งค่า url ของ WordPress เป็น https และยังเพิ่ม WordPress force ssl admin code เป็นไฟล์ wp-config ของฉัน แต่ฉันยังคงทำงานผิดพลาด " หน้าเว็บนี้มีการวนรอบการเปลี่ยนเส้นทาง "

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


98

คุณเพิ่ม$_SERVER['HTTPS'] = 'on';ใน wp-config.php แล้วหรือยัง

คุณควรใช้ปลั๊กอินWP Migrate DBเพื่อย้ายจากhttp://yoursite.comไปยังhttps://yoursite.com


9
ฉันจะให้ 1,000 upvotes สำหรับสิ่งนี้!
Sheharyar

5
ด้วยเหตุผลบางอย่างขั้นตอนที่สำคัญนี้มักจะไม่รวมอยู่ด้วย
Tania Rascia

4
ขอขอบคุณ! นั่นอาจช่วยให้ฉันประหยัดเวลาอีกไม่กี่ชั่วโมงในการพยายามหาสาเหตุที่พื้นที่ผู้ดูแลระบบไม่ทำงานกับ SSL
ค้อนเลื่อน

4
ว้าว! $ _SERVER ['HTTPS'] = 'เปิด'; ช่วยฉันด้วย!
PJunior

2
ทำไมจึงใช้งานได้ ฉันใช้เครื่องมือ S&R ของ Interconnect แล้ว ฉันควรมีโปรโตคอลที่ถูกต้องในฐานข้อมูล
Jeff

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 ผ่านในการตั้งค่าตัวโหลดบาลานซ์ (หรือไฟร์วอลล์) ของคุณ หมายความว่าในขณะที่คุณสามารถเข้าถึงไซต์ผ่าน HTTP ภายใน TLS / SSL การสื่อสารที่เซิร์ฟเวอร์ของคุณได้รับคือ HTTP เท่านั้น หากต้องการบัญชีนั้นจำเป็นต้องมีส่วนหัวด้านบนเพื่อให้ WordPress สามารถ "ตั้งค่า" HTTPS เป็นonใน$_SERVERอาร์เรย์การกำหนดค่า


2
นี่เป็นโซลูชันที่ยอดเยี่ยมโดยเฉพาะสำหรับทุกคนที่ใช้โหลดบาลานเซอร์ ฉันกำลังโฮสต์สิ่งนี้โดยใช้ Dokku (โคลนโฮสต์ด้วยตัวคุณเองของ Heroku) และมีปัญหากับการโหลดทรัพยากรคงที่และการวนรอบการเปลี่ยนเส้นทาง wp-admin Dokku ยังทำพร็อกซีย้อนกลับ nginx เพื่อส่งต่อปริมาณข้อมูล 443 ขาเข้าไปยังพอร์ต 80 ซึ่งจะช่วยแก้ไขปัญหา
ZachM

3
ฉันต้องใส่$_SERVER['HTTPS'] = 'on';เพราะ HTTP_X_FORWARDED_PROTO ไม่ได้อยู่ในการตั้งค่าบนเซิร์ฟเวอร์ของลูกค้าของฉัน: |
Tom Roggero

1
แก้ไขปัญหาของฉันอย่างสมบูรณ์แบบเมื่อใช้ load balancer ของ AWS
Josh

"แก้ไขปัญหาการเปลี่ยนเส้นทางมากเกินไป" เนื่องจากไซต์ของฉันอยู่เบื้องหลัง load balancer บน AWS
voam

ฉันคิดว่าเป็นสิ่งสำคัญที่จะเพิ่มคำตอบนี้การแก้ไขสำหรับไฟล์. htaccess สำหรับกรณีดังกล่าว: stackoverflow.com/questions/36748110/… , ตรวจสอบ @ harshal-lonare
Gustavo Jantsch

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
นี่คือสิ่งที่ฉันเป็นปัญหา ฉันวางสิ่งเหล่านี้ไว้ท้ายไฟล์และมันไม่ทำงาน ฉันพร้อมที่จะสร้างเว็บไซต์ใหม่ตั้งแต่เริ่มต้น ย้ายพวกเขาไปด้านบนและบำปัญหาได้รับการแก้ไข ขอบคุณ!!
Dean Poulin

วิธีนี้ดีมากถ้าคุณใช้ SSL แบบยืดหยุ่นหลังพร็อกซี DNS อย่าง Cloudflare ขอขอบคุณ.
Stefan P

ยืนยันการทำงานแล้ว ขอบคุณมากนี่ช่วยแก้ไขปัญหามากมายที่เรามีกับ API และ IFrames ไซต์ไม่ได้เปิดใช้งาน HTTPS แต่เราต้องการบางหน้าเพื่อเปิดใช้งาน Wordpress ควรตั้งค่านี้ตามค่าเริ่มต้น ...
Andy

FYI - รหัสนั้นสามารถอยู่ที่ใดก็ได้ แต่จำเป็นต้องอยู่ก่อนrequire_once( ABSPATH . 'wp-settings.php' );ซึ่งอยู่ท้ายไฟล์
Damodar Bashyal

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

ที่จริง ... ฉันมีปัญหานี้และการแก้ปัญหาค่อนข้างง่ายและน่าอาย อย่างใดในเว็บโฮสต์โฟลเดอร์ wp-admin ของฉันถูกลบและดังนั้นจึงไม่มีผู้ดูแล wp ด้วยข้อความข้อผิดพลาดเดียวกันนี้

หลังจากทดสอบหลายชั่วโมงหลายวิธีฉันเพิ่งเห็นสิ่งนี้และเมื่อดาวน์โหลดและอัปโหลดอีกครั้งมันทำงานได้ตามปกติ

ตรวจสอบพวกนั้นมันอาจจะง่าย


0

คำถามอายุ 5 ปี ...

เอาล่ะฉันมีข้อผิดพลาดนี้หลังจากติดตั้งใบรับรอง SSL ของฉันและการเปลี่ยนแปลงการเชื่อมโยงทั้งหมดที่มีhttpการhttpsใช้งาน wp-cli.phar พบที่นี่

ฉันลองการกำหนดค่าต่าง ๆ และดูเหมือนจะไม่มีใครแก้ไขได้เว้นแต่ฉันจะตั้งค่านี้:

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

สำหรับสิ่งนี้:

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

อนุญาตให้ฉันกดปุ่มลงชื่อเข้าใช้หน้า แต่ไม่สามารถเข้าสู่ระบบได้จริง ฉันพยายามตอบสองข้อ แต่น่าเสียดายที่ไม่ได้ช่วยอะไรเช่นนั้นจนกว่าฉันจะทำการเปลี่ยนแปลงต่อไปนี้:

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

ไปยัง

! == จริง

ฉันกำลังเรียกใช้ nginx ในฐานะโฮสต์และย้อนกลับพร็อกซีไปยังหน่วย nginx ... หากใครมีความคิดว่าทำไมจึงใช้งานได้โปรดแจ้งให้เราทราบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.