Куки (Cookies) в Multisite-сети с собственными доменными именами сайтов

13 мар. 2017 г., 07:09:35
Просмотры: 31.9K
Голосов: 21

Я решил объединить несколько отдельных сайтов WordPress в единую установку Multisite.

Я создал новую установку Multisite с поддоменами, создал сайт в MU-сети с URL поддомена, экспортировал контент с оригинального отдельного сайта и импортировал этот контент в поддоменный MU-сайт. Затем я удалил оригинальный отдельный сайт из cPanel и установил доменное имя MU-сайта на оригинальное доменное имя.

Главный сайт теперь нормально загружается на своем оригинальном доменном имени, но когда я пытаюсь войти на поддоменный сайт по адресу site.example.com/wp-admin/ (используя учетные данные администратора новой мультисайтовой сети), я получаю ошибку:

ОШИБКА: Куки заблокированы или не поддерживаются вашим браузером. Вы должны включить куки для использования WordPress.

Но куки включены в Chrome.

Я попробовал добавить следующее в wp-config.php:

define('COOKIE_DOMAIN', false);

...но проблема остается.

Та же проблема возникает, если я использую WP Migrate DB Pro для переноса отдельного сайта в поддомен MU-сайта, затем удаляю отдельный сайт из cPanel и устанавливаю домен поддоменного MU-сайта как домен оригинального отдельного сайта... фронтенд сайта загружается нормально, но я не могу войти в админку WP.

7
Комментарии

Вы видели этот ответ Как настроить WordPress Multisite на нескольких доменах без плагина?

bueltge bueltge
16 мар. 2017 г. 15:41:45

Спасибо @bueltge, попробовал добавить define('COOKIE_DOMAIN', false);, но вход на подсайт с собственным доменом не работает - он возвращает обратно на тот же экран входа.

Steve Steve
17 мар. 2017 г. 20:23:33

@Steve вам стоит попробовать именно то, что указано в ответе, и установить пустую строку, т.е. define('COOKIE_DOMAIN', '');. Логическое значение false может иметь или не иметь тот же смысл, что и пустая строка '', в зависимости от приложения.

bosco bosco
22 мар. 2017 г. 01:42:22

Под MU вы имеете в виду, что используете плагин для маппинга доменов? Спасибо.

Greeso Greeso
23 мар. 2017 г. 06:25:29

Нет @Greeso, использую встроенную функциональность URL сайта.

Steve Steve
23 мар. 2017 г. 07:22:26

Привет, у меня нет ничего, кроме интуиции, чтобы подтвердить это, но разве не кажется, что установка cookie domain в '' или false - очень плохая идея с точки зрения безопасности?

squarecandy squarecandy
16 дек. 2018 г. 00:19:13

Перейдите в phpmyadmin. В таблице wp_option значения siteurl и home должны совпадать с вашим доменным именем.

bwise bwise
29 янв. 2019 г. 22:33:56
Показать остальные 2 комментариев
Все ответы на вопрос 15
5
39

Сначала очистите кеш вашего браузера (включая куки) и кеш сервера (например, кеширующие плагины). Затем добавьте следующие строки в файл wp-config.php:

define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');

Также вы можете ознакомиться с ответом ОТСЮДА:

define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('SUNRISE', 'on');

Если проблема сохраняется, то прочтите этот ответ или обратитесь в поддержку вашего сервера. Возможно, на сервере есть проблемы с конфигурацией.

23 мар. 2017 г. 12:04:04
Комментарии

Привет, Scott. Похожая проблема возникла на другом MU-сайте. Я добавил указанные константы в wp-config.php, но на этом другом MU-сайте childsitedomain.com/wp-login.php выдает ошибку Константа "COOKIE_DOMAIN" определена (вероятно, в wp-config.php). Пожалуйста, удалите или закомментируйте эту строку define(). Есть идеи, как решить эту ситуацию?

Steve Steve
27 мар. 2017 г. 13:53:39

Если я закомментирую эту строку, то после входа на дочерний сайт получаю ошибку: ОШИБКА: Cookies заблокированы или не поддерживаются вашим браузером. Вы должны включить cookies для использования WordPress.

Steve Steve
27 мар. 2017 г. 13:56:18

Я поднял этот вопрос в новом вопросе.

Steve Steve
27 мар. 2017 г. 14:03:10

4 строки в верхней секции сработали для меня

azote azote
21 июл. 2022 г. 18:40:09

Установка SUBDOMAIN_INSTALL в false помогла мне сейчас с WordPress 6.7.1, так как я заметил, что у вас было false в отличие от других ответов. Раньше работало с true, так что не знаю, изменил ли какой-то апдейт WordPress что-то связанное с этим.

PatrikN PatrikN
16 дек. 2024 г. 14:45:32
0

Используется WordPress версии 4.9.4.

У меня возникала ошибка, связанная с куки, и после изучения различных вариантов помощи в итоге я решил проблему, использовав часть исправления от Скотта. (Примечание: я не очищал кеш куки.)

  1. Удалил строку с sunrise.php в wp-config.php (я использовал нативное маппинг доменов, поэтому убрал изменения, связанные с установкой MU-плагина, которые сделал ранее)

  2. Изменил свой wp-config.php на следующий код:

    /* Мультисайт */
    
    define('WP_DEBUG', false);
    
    define( 'WP_ALLOW_MULTISITE', true );
    
    define('MULTISITE', true);
    define('SUBDOMAIN_INSTALL', true);
    define('DOMAIN_CURRENT_SITE', 'www.mysite.example');
    define('PATH_CURRENT_SITE', '/');
    define('SITE_ID_CURRENT_SITE', 1);
    define('BLOG_ID_CURRENT_SITE', 1);
    /* define( ‘COOKIE_DOMAIN’, $_SERVER[ ‘HTTP_HOST’ ] ); */
    
    define('ADMIN_COOKIE_PATH', '/');
    define('COOKIE_DOMAIN', '');
    define('COOKIEPATH', '');
    define('SITECOOKIEPATH', '');
    
    /* На этом всё, прекращаем редактирование! Удачного ведения блога. */
    
27 мар. 2018 г. 22:33:22
1

Наконец, после нескольких часов, буквально, устранения неполадок мне удалось решить эту проблему на AWS Lightsail Bitnami Multisite WordPress (WordPress 5.0.4), выполнив следующие действия:

  1. Убедитесь, что плагин WPMU Domain Mapping отключен
  2. Отредактируйте файл /opt/bitnami/apps/wordpress/htdocs/wp-config.php...

    a. Добавьте следующее:

     define('ADMIN_COOKIE_PATH', '/');
     define('COOKIE_DOMAIN', '');
     define('COOKIEPATH', '');
     define('SITECOOKIEPATH', '');
    
     /* Это всё, прекращайте редактирование! Удачного блогинга. */
    

    b. Закомментируйте:

    // define('SUNRISE', 'on');
    

После этих изменений вход в систему прошел успешно — никаких ошибок. Спасибо всем за советы. Без них я бы до сих пор ломал голову.

Я нашел ответ здесь:

https://docs.bitnami.com/aws/apps/wordpress-multisite/configuration/configure-wordpress-multisite

Эта функциональность сопоставления доменов встроена в WordPress Multisite начиная с версии 4.5. Если вы используете более старую версию, вам понадобится плагин WordPress MU Domain Mapping.

Получается, что плагин WPMU Domain Mapping включен в пакет AWS Lightsail Bitnami Multisite без необходимости.

18 мар. 2019 г. 20:32:06
Комментарии

Спасибо! У меня сработало без отключения плагина WPMU Domain Mapping. Также я нигде не нашел SUNRISE, поэтому мне не пришлось закомментировать и этот момент.

Monarch Wadia Monarch Wadia
20 авг. 2019 г. 01:08:39
2

Я только что закончил устранение аналогичной проблемы с мультисайтом на поддоменах.

С таким кодом:

define('COOKIE_DOMAIN', $_SERVER['HTTP_HOST']);

Сайт всё равно выдавал ошибку cookie, а в некоторых случаях при попытке применить предложенные выше решения...

define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', ''); 

Это вызывало другую ошибку - удаление определений, ссылающихся на "COOKIE_DOMAIN" при посещении подсайтов.

В итоге мне удалось войти в систему, убедившись, что оба этих параметра определены прямо перед информацией о мультисайтовой сети:

define('COOKIE_DOMAIN', $_SERVER['HTTP_HOST']);
define('COOKIE_DOMAIN', '');

Попробуйте убедиться, что оба этих параметра определены. Надеюсь, это поможет.

6 дек. 2017 г. 19:16:07
Комментарии

Для уточнения вышесказанного, похоже, что работает просто define('COOKIE_DOMAIN', '');

Ruben Apolinar Ruben Apolinar
6 дек. 2017 г. 19:22:45

Это работает, но ломает предпросмотр записей... Я получаю: Извините, вам не разрешено просматривать черновики.

Alex Bogias Alex Bogias
7 янв. 2021 г. 15:36:14
1

Я закомментировал строку define('SUNRISE', 'on');

/* define('SUNRISE', 'on'); */
define('COOKIE_DOMAIN', $_SERVER['HTTP_HOST']);
define('COOKIE_DOMAIN', '');

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

ОШИБКА: Cookies заблокированы или не поддерживаются вашим браузером. Вы должны включить cookies для использования WordPress.

Вход в систему также заработал.

23 янв. 2018 г. 00:35:35
Комментарии

Можно также пропустить вторую строку, так как она фактически переопределяется третьей. :)

jgangso jgangso
17 авг. 2022 г. 11:27:25
0

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

Что действительно помогло — просто добавить следующую строку в конфигурацию мультисайта в wp-config:

define('COOKIE_DOMAIN', false);

Таким образом, раздел в wp-config должен выглядеть так:

define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('COOKIE_DOMAIN', false);

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

9 мая 2018 г. 01:05:49
1

Как ни странно, у меня это сработало (на нескольких мультисайтах) — установить SUBDOMAIN_INSTALL в false. Честно говоря, у меня не было времени разбираться, почему так произошло...

define('SUBDOMAIN_INSTALL', false);

20 авг. 2018 г. 12:47:01
Комментарии

У меня сейчас та же проблема с WordPress 6.7.1. Раньше работало с true, так что не знаю, изменил ли какой-то апдейт WordPress что-то связанное с этим.

PatrikN PatrikN
16 дек. 2024 г. 14:47:31
0

Не знаю как вам, ребята, но мне неожиданно сильно помогло изменить это

define( 'COOKIEDOMAIN', '' );

на это

define( 'COOKIE_DOMAIN', '' );

И да, я всё ещё осмеливаюсь считать себя опытным PHP & WP разработчиком. Просто хотел поделиться, что такое случается со всемими. :)

17 авг. 2022 г. 11:50:40
0
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
//define('DOMAIN_CURRENT_SITE', 'masterdigitalservices.com');
//define('PATH_CURRENT_SITE', '/');
//define('SITE_ID_CURRENT_SITE', 1);
//define('BLOG_ID_CURRENT_SITE', 1);

Вот мой новый wp-config. Похоже, он был жестко привязан к конкретному сайту и не позволял работать с другими доменами — только с поддоменами. Отличные решения здесь.

31 мар. 2018 г. 21:50:16
0

У меня тоже была такая проблема, и ничего не помогало. Попробовал в Microsoft Edge — ошибка не появлялась.

По крайней мере в моём случае проблема была именно в Google Chrome.

30 апр. 2018 г. 23:43:32
0

ЭТО ПОМОГЛО МНЕ РЕШИТЬ ПРОБЛЕМУ Я не полностью настроил WordPress для нового доменного имени. Я создал свой сайт на subdomain.domain.com Затем я хотел использовать newdomain.com вместо subdomain.domain.com Для этого потребовалось:

  1. В WordPress Сеть > Администрирование > Сайты изменить название сайта на новое (что я уже сделал, сайт работал)
  2. В WordPress Сеть > Администрирование > Настройки > Домены добавить новое имя для ID сайта и отметить галочкой как основной домен (чтобы указать, что это имя является основным). Чтобы найти ID сайта, можно навести курсор на пункт Сеть > Администрирование > Сайты, где будет указано, с каким ID сайта вы работаете. Надеюсь, это поможет тем, кто получал сообщение о том, что cookies заблокированы или не поддерживаются при попытке входа. С наилучшими пожеланиями, SamTapsell
17 окт. 2018 г. 16:04:22
0

Мне удалось решить проблему после добавления следующего кода в wp-config.php. Ссылка на источник

define( 'COOKIEPATH', preg_replace( '|https?://[^/]+|i', '', get_option( 'home' ) . '/' ) );
define( 'SITECOOKIEPATH', preg_replace( '|https?://[^/]+|i', '', get_option( 'siteurl' ) . '/' ) );
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
define( 'PLUGINS_COOKIE_PATH', preg_replace( '|https?://[^/]+|i', '', WP_PLUGIN_URL ) );
28 дек. 2018 г. 13:49:55
0

Я решил проблему следующим образом:

Изменил настройку DOMAIN_CURRENT_SITE в файле wp-config.php на:

 define('DOMAIN_CURRENT_SITE', $_SERVER['HTTP_HOST']);

Таким образом, моя конфигурация выглядит так:

define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', $_SERVER['HTTP_HOST']);
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

После этого я смог войти во все сайты мультисайтовой сети по URL вида web1.example.com/wp-admin или web2.example.com/wp-admin.

8 апр. 2020 г. 19:14:01
0

Вот что мы используем в SlickStack для мультисайтовых установок... это работает как для сетей с поддоменами, так и для пользовательских доменных имен:

define('MULTISITE', true); // Включаем мультисайтовый режим
define('SUBDOMAIN_INSTALL', true); // Используем поддомены
define('DOMAIN_CURRENT_SITE', $_SERVER['HTTP_HOST']); // Текущий домен из серверных переменных
define('NOBLOGREDIRECT', 'https://example.com'); // Перенаправление для несуществующих сайтов
define('PATH_CURRENT_SITE', '/'); // Путь к корню сайта
define('SITE_ID_CURRENT_SITE', 1); // ID основного сайта
define('BLOG_ID_CURRENT_SITE', 1); // ID основного блога

А затем:

define('COOKIE_DOMAIN', false); // Домен для кук
define('COOKIEPATH', ''); // Путь для кук
define('SITECOOKIEPATH', ''); // Путь для кук сайта
define('ADMIN_COOKIE_PATH', '/'); // Путь для кук админки
24 окт. 2022 г. 11:32:10
1
-1

Попробуйте добавить следующее в ваш файл wp-config.php

Также удалите все cookies в вашем браузере перед тестированием

define( 'COOKIE_DOMAIN', $_SERVER[ 'HTTP_HOST' ] );
16 мар. 2017 г. 15:38:04
Комментарии

После внесения этого изменения я не мог войти ни на один сайт, включая основной сайт.

Steve Steve
17 мар. 2017 г. 20:19:43