Циклическое перенаправление WordPress wp-admin через https

3 дек. 2014 г., 07:57:53
Просмотры: 103K
Голосов: 79

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

Ошибка циклического перенаправления в браузере Chrome

0
Все ответы на вопрос 10
17
137

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

Также вам следует использовать плагин WP Migrate DB для миграции с http://вашсайт.com на https://вашсайт.com

25 февр. 2015 г. 21:01:26
Комментарии

Я бы поставил тебе 1000 плюсов за это!

Sheharyar Sheharyar
17 янв. 2016 г. 23:56:07

По какой-то причине этот важный шаг так часто упускают.

Tania Rascia Tania Rascia
27 янв. 2016 г. 08:47:17

Спасибо! Вероятно, ты сэкономил мне несколько часов попыток понять, почему админка не работает с SSL.

Sledge Hammer Sledge Hammer
20 февр. 2016 г. 19:42:04

это здорово, единственная проблема - как установить плагин, если сайт не работает :) Я знаю, что всегда нужно делать резервную копию перед такими действиями, но все же. Приведенное ниже решение сработало для меня :)

Timur Gafforov Timur Gafforov
22 сент. 2016 г. 11:09:01

вау! $_SERVER['HTTPS'] = 'on'; спас меня!

PJunior PJunior
3 февр. 2017 г. 19:13:36

Почему это работает? Я уже использовал инструмент S&R от Interconnect. В базе данных уже должен быть правильный протокол.

Jeff Jeff
15 февр. 2017 г. 22:28:35

условие if в документации не сработало для меня, поэтому я просто всегда устанавливаю $_SERVER['HTTPS'] = 'on';

lewis lewis
13 апр. 2017 г. 19:38:53

После добавления $_SERVER['HTTPS']='on'; в wp-config.php я получаю сообщение Извините, у вас нет доступа к этой странице. на странице /wp-admin, хотя я вошёл как администратор. Я использую Cloudflare flexible SSL, поэтому HTTPS-трафик перенаправляется на HTTP-порт.

baptx baptx
21 дек. 2017 г. 14:41:11

Нам нужно добавить if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; } перед require_once(ABSPATH . 'wp-settings.php');, как сказано здесь: 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 дек. 2017 г. 14:41:50

Извините, что добавляю ещё один комментарий про $_SERVER['HTTPS'] = 'on';, но это действительно исправило все проблемы с редиректами и у меня. Я перепробовал все возможные изменения в nginx.conf, а также remove_filter('template_redirect', 'redirect_canonical'); что сработало, но только для главной страницы. $_SERVER['HTTPS'] = 'on' сразу же исправил всё. Спасибо!!!!

Daniel Daniel
15 мар. 2018 г. 04:30:44

Спасибо за это. Это сработало после 2 часов попыток других исправлений.

hypern00b hypern00b
31 мар. 2018 г. 06:25:42

+10000, бился головой об стену, пытаясь понять, почему SSL сломал URLs в админке и на страницах

Wobbles Wobbles
17 мая 2018 г. 16:34:30

Огромное спасибо! Часы поисков наконец привели меня в нужное место.

Foxan Ng Foxan Ng
6 июн. 2018 г. 08:34:34

СПАСИБО!! Это очень важно для Cloudflare и должно быть частью руководства.

Sprachprofi Sprachprofi
5 июл. 2018 г. 21:08:38

Вы гений! Огромное спасибо. Я потратил столько часов, чтобы разобраться в этом. Вы вытащили меня из бесконечного цикла. Спасибо!!

SequenceDigitale.com SequenceDigitale.com
22 июл. 2018 г. 20:18:14

Большое спасибо! $_SERVER['HTTPS'] = 'on'; сработало у меня.

Komal Komal
20 окт. 2018 г. 09:18:40

proxy_set_header X-Forwarded-Proto https; тоже сработало у меня. Спасибо за ответ.

oliver nadj oliver nadj
18 окт. 2023 г. 14:32:16
Показать остальные 12 комментариев
6
76

У меня была похожая проблема, и я просто добавил следующий фрагмент в свой wp-config.php:

/** SSL */  
define('FORCE_SSL_ADMIN', true);  
// в некоторых настройках HTTP_X_FORWARDED_PROTO может содержать  
// список, разделенный запятыми, например http,https  
// поэтому проверяем наличие https  
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)  
    $_SERVER['HTTPS']='on';

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

16 мар. 2016 г. 22:27:58
Комментарии

Это отличное решение, особенно для тех, кто использует балансировщик нагрузки. Я размещал это с помощью Dokku (самостоятельно развертываемого клона Heroku) и столкнулся с проблемами загрузки статических ресурсов и бесконечным редиректом в wp-admin. Dokku также использует обратный прокси nginx для перенаправления входящего трафика с порта 443 на порт 80, и это решение исправляет проблему.

Zach McCormick Zach McCormick
6 июн. 2016 г. 17:54:57

Мне пришлось просто добавить $_SERVER['HTTPS'] = 'on';, потому что HTTP_X_FORWARDED_PROTO даже нет в настройках на сервере моего клиента :|

Tom Roggero Tom Roggero
23 янв. 2017 г. 19:11:44

Идеально решило мою проблему при использовании балансировщика нагрузки AWS.

Josh Josh
12 апр. 2017 г. 18:27:46

Это также решило проблему "Слишком много перенаправлений", так как мой сайт находится за балансировщиком нагрузки на AWS.

voam voam
1 нояб. 2017 г. 21:24:32

Думаю, важно добавить к этому ответу исправление для файла .htaccess в таких случаях: https://stackoverflow.com/questions/36748110/htaccess-too-many-redirects-when-trying-to-force-https, проверьте ответ @harshal-lonare.

Gustavo Jantsch Gustavo Jantsch
5 окт. 2018 г. 18:29:29

Элегантное решение. Спасибо!!!

GTodorov GTodorov
13 июн. 2023 г. 00:34:28
Показать остальные 1 комментариев
6
18

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

Решение, предложенное Elias, с добавлением следующего кода в wp-config.php, сработало для меня:

/** SSL */  
define('FORCE_SSL_ADMIN', true);  
// в некоторых настройках HTTP_X_FORWARDED_PROTO может содержать  
// список, разделённый запятыми, например http,https  
// поэтому проверяем наличие https  
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)  
    $_SERVER['HTTPS']='on';

Однако это сработало только тогда, когда я разместил этот код перед всем остальным в этом файле!

14 сент. 2017 г. 11:52:27
Комментарии

Именно в этом была моя проблема. Я добавил эти строки в конец файла, и это не работало. Я уже был готов пересоздать сайт с нуля. Переместил их в начало, и бац — проблема решена. Спасибо вам, огромное спасибо!!

Dean Poulin Dean Poulin
3 февр. 2018 г. 04:19:14

Это отличное решение, если вы используете гибкий SSL за прокси-DNS, например Cloudflare. Спасибо.

Stefan P Stefan P
16 февр. 2018 г. 07:44:24

Подтверждаю, что работает. Огромное спасибо, это решает множество проблем с API и IFrame. На сайте не включен HTTPS, но для некоторых страниц он нужен. WordPress должен иметь такую настройку по умолчанию...

Andy Andy
25 апр. 2018 г. 17:25:20

К вашему сведению - этот код может находиться где угодно, но должен быть перед require_once( ABSPATH . 'wp-settings.php' );, который находится в конце файла.

Damodar Bashyal Damodar Bashyal
20 сент. 2019 г. 03:42:21

Это работает, спасибо

Mohammed Tawfik Mohammed Tawfik
28 апр. 2020 г. 03:22:35

у меня тоже сработало

Md. Amanur Rahman Md. Amanur Rahman
10 июн. 2020 г. 12:39:30
Показать остальные 1 комментариев
2

Еще один вариант для заметок, просто добавьте это в начало файла 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';
}
21 февр. 2017 г. 14:33:57
Комментарии

Только что применил это решение для WordPress 5.5.1, работающего за HAProxy на фаерволе pfsense. Другие предложенные варианты не работали корректно, по крайней мере "из коробки" без дополнительной настройки HAProxy и заголовков, которые он отправляет.

Swift Swift
24 сент. 2020 г. 07:37:48

Ни одно из других предложений не сработало, кроме этого. Большое спасибо

Mahbub Mahbub
16 нояб. 2020 г. 19:26:32
1

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);
// в некоторых настройках HTTP_X_FORWARDED_PROTO может содержать
// список через запятую, например http,https   
// поэтому проверяем наличие https   
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== true)  
     $_SERVER['HTTPS']='on';

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

!== false

на

!== true

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

19 июл. 2019 г. 14:15:31
Комментарии

Ты спас мой день. Ты самый прекрасный человек на свете.

mobdevkun mobdevkun
16 июл. 2024 г. 22:16:50
0

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

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

Проверьте это, ребята, иногда всё может быть настолько просто.

10 февр. 2019 г. 16:22:18
0

У меня была такая же проблема, когда я разместил свой сайт на Azure WebApp Service под Linux.

Попробуйте этот плагин. Будьте осторожны, когда он активен, он работает. https://wordpress.org/plugins/jsm-force-ssl/

Этот плагин использует нативные фильтры WordPress вместо буфера вывода PHP для максимальной надежности, производительности и совместимости с кешированием (этот плагин не влияет на производительность кеширования), а также 301 постоянные редиректы для лучшего SEO (редиректы 301 считаются лучшими для SEO при переходе с HTTP на HTTPS).

Учитывает переменные прокси / балансировки нагрузки для крупных хостинг-сред:

HTTP_X_FORWARDED_PROTO HTTP_X_FORWARDED_SSL Требования:

Ваш веб-сервер должен быть настроен с SSL-сертификатом и способен обрабатывать HTTPS-запросы.

Просто активируйте плагин, и всё готово:

Нет настроек плагина для изменения, и никакие изменения не вносятся в конфигурацию WordPress — просто активируйте или деактивируйте плагин, чтобы включить / отключить фильтры и динамические редиректы.

7 мая 2020 г. 17:25:39
0

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

Во-первых, мой сайт на WordPress размещен на cPanel, поэтому я использовал инструмент Softaculous в cPanel для обновления версии WordPress.

Во-вторых, я обновил базу данных WordPress.

(Я заметил, что мой файл .htaccess в корневой папке сайта был обновлен с добавлением строки RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}])

Затем я проверил файл .htaccess в папке wp-admin и увидел там следующие команды:

Order Allow,Deny
Deny from all

На сайте WordPress я прочитал, что эти команды предназначены для предотвращения веб-доступа к файлам в этой папке, но такое поведение мне не требовалось (на мой взгляд).

Поэтому я закомментировал эти строки и смог загрузить админ-панель.

19 февр. 2021 г. 15:32:05
0

Настройте CloudFlare на использование только https и в файле wp-config установите

define('FORCE_SSL_ADMIN', false); // Отключает принудительное SSL для админки
define('FORCE_SSL_LOGIN', false); // Отключает принудительное SSL для страницы входа
9 июл. 2021 г. 11:39:40
1

Спасибо, это сработало для меня. Вы сделали мой день

/** SSL */  
define('FORCE_SSL_ADMIN', true);  
// в некоторых настройках HTTP_X_FORWARDED_PROTO может содержать  
// список, разделенный запятыми, например http,https  
// поэтому проверяем наличие https  
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)  
    $_SERVER['HTTPS']='on';
13 февр. 2024 г. 16:14:15
Комментарии

Это просто ответ Элиаса?

Rup Rup
13 февр. 2024 г. 19:22:31