Vòng lặp chuyển hướng https của wp-admin https


60

Tôi đang sử dụng nginx làm máy chủ web của mình và tôi đã chỉnh sửa tệp cấu hình để trỏ đến https, vì vậy tôi thay đổi cài đặt url WordPress thành https và cũng đã thêm mã quản trị ssl WordPress vào tệp wp-config của tôi nhưng tôi vẫn gặp lỗi " Trang web này có vòng lặp chuyển hướng "

nhập mô tả hình ảnh ở đây

Câu trả lời:


98

Bạn đã thêm vào $_SERVER['HTTPS'] = 'on';wp-config.php của bạn ?

Bạn cũng nên sử dụng plugin WP Migrate DB để di chuyển từ http://yoursite.comsanghttps://yoursite.com


9
Tôi sẽ cung cấp cho bạn 1000 upvote cho điều này!
Sheharyar

5
Vì một số lý do, bước quan trọng này thường không được bao gồm.
Tania Rascia

4
Cảm ơn bạn! Điều đó có thể giúp tôi tiết kiệm thêm vài giờ cố gắng tìm hiểu tại sao khu vực quản trị viên không hoạt động với SSL.
Sledge Hammer

4
ồ $ _SERVER ['HTTPS'] = 'trên'; cứu tôi!
PJunior

2
Tại sao điều này làm việc? Tôi đã sử dụng công cụ S & R của Interconnect. Tôi đã có giao thức đúng trong cơ sở dữ liệu.
Jeff

51

Tôi gặp vấn đề tương tự và chỉ cần thêm đoạn mã sau vào 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';

như được đề xuất trong Codex . Điều này sẽ chỉ cần thiết trong trường hợp có bật thông qua SSL trong thiết lập cân bằng tải (hoặc tường lửa) của bạn. Có nghĩa là trong khi bạn có thể truy cập trang web qua HTTP trong TLS / SSL, thông tin liên lạc mà máy chủ của bạn nhận được chỉ là HTTP. Để giải thích điều đó, tiêu đề trên là cần thiết để WordPress có thể "đặt" HTTPS thành ontrong $_SERVERmảng cấu hình.


2
Đây là giải pháp tuyệt vời dành riêng cho bất cứ ai sử dụng bộ cân bằng tải. Tôi đã lưu trữ cái này bằng cách sử dụng Dokku (một bản sao của chính Heroku) và gặp vấn đề với việc tải tài nguyên tĩnh và vòng lặp chuyển hướng wp-admin. Dokku cũng thực hiện một proxy ngược nginx để chuyển tiếp lưu lượng 443 đến cổng 80 và điều này đã khắc phục vấn đề.
ZachM

3
Tôi phải đặt $_SERVER['HTTPS'] = 'on';vì HTTP_X_FORWARDED_PROTO thậm chí không có trong cài đặt trên máy chủ của khách hàng của tôi: |
Tom Roggero

1
Đã khắc phục sự cố của tôi một cách hoàn hảo khi sử dụng bộ cân bằng tải AWS.
Josh

Điều này cũng đã khắc phục "Quá nhiều vấn đề chuyển hướng" vì trang web của tôi đứng sau bộ cân bằng tải trên AWS.
bọt

Tôi nghĩ điều quan trọng là thêm vào câu trả lời này cách khắc phục cho tệp .htaccess cho các trường hợp như vậy: stackoverflow.com/questions/36748110/ , kiểm tra @ khắc nghiệt-lonare trả lời.
Gustavo Jantsch

11

Vì tôi chưa có đặc quyền nhận xét, tôi sẽ đăng phần bổ sung này dưới dạng câu trả lời khác:

Giải pháp được đề xuất bởi Elias, để thêm vào những điều sau đây wp-config.php, đã thực hiện thủ thuật cho tôi:

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

Tuy nhiên, nó chỉ hoạt động với tôi khi tôi đặt nó trước mọi thứ khác trong tập tin này!


1
Đây chính xác là vấn đề của tôi. Tôi đã đặt những thứ này ở cuối tập tin và nó không hoạt động. Tôi đã sẵn sàng để xây dựng lại trang web của tôi từ đầu. Di chuyển chúng lên đầu và bam, vấn đề cố định. Cảm ơn cảm ơn!!
Dean Poulin

Giải pháp này rất tuyệt nếu bạn đang sử dụng SSL linh hoạt đằng sau DNS proxy như Cloudflare. Cảm ơn bạn.
Stefan P

Khẳng định làm việc. Cảm ơn bạn rất nhiều, điều này khắc phục rất nhiều vấn đề chúng tôi gặp phải với API và IFrames. Trang web không kích hoạt HTTPS, nhưng chúng tôi cần một số trang để bật nó. Wordpress nên có cài đặt này theo mặc định ...
Andy

FYI - mã đó có thể ở bất cứ đâu nhưng cần phải ở trước require_once( ABSPATH . 'wp-settings.php' );đó ở cuối tập tin.
Damodar Bashyal

7

Một phiên bản khác cho sách, chỉ cần thêm phiên bản này vào đầu wp-config.php

Lý do là có thể có các bộ cân bằng tải hoặc một cái gì đó không vượt qua giá trị https thích hợp, vì vậy bạn phải lấy nó từ nơi khác và giả mạo nó cho 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';
}

0

Trên thực tế ... tôi đã có vấn đề này và việc giải quyết khá dễ dàng và lúng túng. Bằng cách nào đó trên webhost, thư mục wp-admin của tôi đã bị xóa và do đó không có wp-admin nào có cùng thông báo lỗi này.

Sau nhiều giờ thử nghiệm rất nhiều cách khác nhau, tôi chỉ thấy điều này và khi tải xuống và tải lên lại, tất cả đều hoạt động như bình thường.

Kiểm tra nó các bạn, nó có thể đơn giản.


0

Câu hỏi 5 tuổi ...

Được rồi, tôi đã có lỗi này, sau khi cài đặt SSL Certificate của tôi và thay đổi tất cả các liên kết mà là httpđể httpssử dụng wp-cli.phar tìm thấy ở đây .

Tôi đã thử các cấu hình khác nhau và dường như không có cấu hình nào giải quyết được điều này, trừ khi tôi đặt điều này:

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

đến đây:

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

Nó cho phép tôi nhấn trang đăng nhập, nhưng sau đó không thể đăng nhập. Tôi đã thử trả lời hai nhưng điều đó không may cũng không giúp được gì, cho đến khi tôi thực hiện thay đổi sau:

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

Vì một số lý do, tôi không biết tại sao - tôi phải thay đổi

! == sai

đến

! == đúng

Tôi đang chạy nginx với tư cách là máy chủ lưu trữ và đảo ngược proxy cho đơn vị nginx ... Nếu có ai biết tại sao nó hoạt động, vui lòng cho tôi biết

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.