Цикл перенаправления WordPress wp-admin https

61

Я использую nginx в качестве своего веб-сервера и отредактировал файл конфигурации так, чтобы он указывал на https, поэтому я изменил настройки URL-адреса WordPress на https, а также добавил код администратора WordPress force ssl в мой файл wp-config, но продолжаю сталкиваться с ошибкой " Эта веб-страница имеет цикл перенаправления "

введите описание изображения здесь

iamkingsleyf
источник

Ответы:

99

Вы добавили $_SERVER['HTTPS'] = 'on';в свой wp-config.php ?

Вы должны также использовать WP Migrate DB плагин для перехода от http://yoursite.comкhttps://yoursite.com

thaevok
источник
9
Я бы дал вам 1000 голосов за это!
Шехарьяр
5
По некоторым причинам этот жизненно важный шаг так часто не включается.
Таня Раския
4
Спасибо! Это, вероятно, сэкономило мне еще несколько часов, пытаясь выяснить, почему область администратора не работает с SSL.
кувалда
4
Вау! $ _SERVER ['HTTPS'] = 'on'; спас меня!
PJunior
2
Почему это работает? Я уже использовал инструмент Interconnect S & R. У меня уже должен быть правильный протокол в базе данных.
Джефф
52

У меня была похожая проблема, и я просто добавил следующий фрагмент к своему 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';

как предложено в Кодексе . Это понадобится только в том случае, если в настройке балансировщика нагрузки (или брандмауэра) включена сквозная передача SSL. Это означает, что, хотя вы можете получить доступ к сайту через HTTP в рамках TLS / SSL, ваш сервер получает только HTTP. Для этого необходим вышеуказанный заголовок, чтобы WordPress мог «установить» HTTPS onв $_SERVERконфигурационном массиве.

Элиас
источник
2
Это отличное решение специально для тех, кто использует балансировщик нагрузки. Я размещал его, используя Dokku (клон Heroku "сам хост"), и имел проблемы со статической загрузкой ресурсов и циклом перенаправления wp-admin. Dokku также использует обратный прокси-сервер nginx для пересылки входящего трафика 443 на порт 80, и это устраняет проблему.
ЗакМ
3
Я должен был просто поставить, $_SERVER['HTTPS'] = 'on';потому что HTTP_X_FORWARDED_PROTO даже не в настройках на сервере моего клиента: |
Том
1
Отлично исправил мою проблему при использовании балансировщика нагрузки AWS.
Джош
Это также устранило «Слишком много проблем с перенаправлением», так как мой сайт находится за балансировщиком нагрузки в AWS.
voam
Я думаю, что важно добавить к этому ответу исправление для файла .htaccess для таких случаев: stackoverflow.com/questions/36748110/… , check @ harshal-lonare answer.
Густаво Янч
11

Поскольку у меня пока нет права комментировать, я опубликую это дополнение как другой ответ:

Решение, предложенное Элиасом, к которому нужно добавить следующее 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
Это было именно то, что было моей проблемой. Я положил их в конец файла, и он не работал. Я был готов восстановить свой сайт с нуля. Переместили их наверх и бац, исправили проблему. Спасибо Спасибо!!
Дин Пулин
Это решение отлично подходит, если вы используете гибкий SSL за прокси-сервером DNS, таким как Cloudflare. Спасибо.
Стефан П,
Подтвердил работу. Большое спасибо, это исправляет много проблем, которые у нас были с API и IFrames. На сайте не включен HTTPS, но нам нужны некоторые страницы, чтобы включить его. Wordpress должен иметь это как настройку по умолчанию ...
Энди
К вашему сведению - этот код может быть где угодно, но должен быть перед тем, require_once( ABSPATH . 'wp-settings.php' );который находится в конце файла.
Дамодар Башял
7

Еще одна версия для книг, просто добавьте это в начало wp-config.php

Причина в том, что могут быть балансировщики нагрузки или что-то, что не передает правильное значение https, поэтому вы должны взять его из другого места и подделать для 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

На самом деле ... У меня была эта проблема, и решение было довольно легким и смущающим. Каким-то образом на веб-хосте моя папка wp-admin была удалена и, следовательно, нет wp-admin с таким же сообщением об ошибке.

После многих часов тестирования я видел это по-разному, а когда снова загружал и загружал, все работало как обычно.

Проверьте это, ребята, это может быть так просто.

emcolsson
источник
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';

Почему-то не знаю почему - пришлось менять

! == ложь

в

! == верно

Я использую nginx в качестве хоста и обратный прокси-сервер для модуля nginx ... Если у кого-то есть идеи, почему это работает, пожалуйста, дайте мне знать

Рики
источник