WordPress wp-admin https цикл переадресації


60

Я використовую nginx як свій веб-сервер, і я відредагував файл конфігурації, щоб вказати на https, тому я змінив налаштування URL-адреси WordPress на https, а також додав код адміністратора WordPress force ssl до мого файлу wp-config, але я продовжую працювати з помилкою " Ця веб-сторінка має цикл переспрямування "

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

Відповіді:


98

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

Ви також повинні використовувати плагін WP Migrate DB для міграції з http://yoursite.comнаhttps://yoursite.com


9
Я дав би вам 1000 грошей за це!
Шехаряр

5
Чомусь цей життєвий крок так часто не включається.
Tania Rascia

4
Дякую! Це, ймовірно, врятувало мене ще кілька годин, намагаючись з’ясувати, чому область адміністратора не працює з SSL.
Кувалда

4
Оце Так! $ _SERVER ['HTTPS'] = 'увімкнено'; врятував мене!
PJunior

2
Чому це працює? Я вже використовував інструмент S&R Interconnect. Я вже повинен мати правильний протокол у базі даних.
Джефф

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

як запропоновано в Кодексі . Це знадобиться лише в тому випадку, якщо в налаштуваннях балансиру навантаження (або брандмауера) увімкнено прохід 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 навіть не в налаштуваннях на сервері мого клієнта: |
Том Роджеро

1
Моя проблема виправлена ​​ідеально під час використання балансира навантаження AWS.
Джош

Це також вирішило "Занадто багато проблем із переадресацією", оскільки мій сайт стоїть за балансиром навантаження на AWS.
voam

Я думаю , що дуже важливо , щоб додати до цього відповісти на виправлення файлу .htaccess для таких випадків: stackoverflow.com/questions/36748110 / ... , перевірка @ harshal-lonare відповіді.
Густаво Янц

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
Саме в цьому полягала моя проблема. Я поставив їх у кінці файлу, і він не працював. Я був готовий відновити свій сайт з нуля. Перенесли їх на верхівку і бамбук, виправили виправлення. Дякую дякую!!
Дін Поулін

Це рішення чудово, якщо ви використовуєте гнучкий SSL за таким проксі-сервером DNS, як Cloudflare. Дякую.
Стефан П

Підтверджена робота. Дякую велике, це виправляє багато проблем із API та IFrames. На сайті не ввімкнено HTTPS, але нам потрібні кілька сторінок. Wordpress повинен мати це як налаштування за замовчуванням ...
Енді,

FYI - цей код може бути де завгодно, але він повинен бути перед ним 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-адміністратор із цим самим повідомленням про помилку.

Після годин тестування стільки різних способів я щойно побачив це, а після завантаження та завантаження знову все працювало як нормально.

Перевірте, хлопці, це може бути так просто.


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 ... Якщо хтось має уявлення, чому це спрацювало, будь ласка, дайте мені знати

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.