Куки (Cookies) в Multisite-сети с собственными доменными именами сайтов
Я решил объединить несколько отдельных сайтов 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.

Сначала очистите кеш вашего браузера (включая куки) и кеш сервера (например, кеширующие плагины). Затем добавьте следующие строки в файл 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');
Если проблема сохраняется, то прочтите этот ответ или обратитесь в поддержку вашего сервера. Возможно, на сервере есть проблемы с конфигурацией.

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

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

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

Используется WordPress версии 4.9.4.
У меня возникала ошибка, связанная с куки, и после изучения различных вариантов помощи в итоге я решил проблему, использовав часть исправления от Скотта. (Примечание: я не очищал кеш куки.)
Удалил строку с
sunrise.php
вwp-config.php
(я использовал нативное маппинг доменов, поэтому убрал изменения, связанные с установкой MU-плагина, которые сделал ранее)Изменил свой
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', ''); /* На этом всё, прекращаем редактирование! Удачного ведения блога. */

Наконец, после нескольких часов, буквально, устранения неполадок мне удалось решить эту проблему на AWS Lightsail Bitnami Multisite WordPress (WordPress 5.0.4), выполнив следующие действия:
- Убедитесь, что плагин WPMU Domain Mapping отключен
Отредактируйте файл /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 без необходимости.

Я только что закончил устранение аналогичной проблемы с мультисайтом на поддоменах.
С таким кодом:
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', '');
Попробуйте убедиться, что оба этих параметра определены. Надеюсь, это поможет.

Я закомментировал строку define('SUNRISE', 'on');
/* define('SUNRISE', 'on'); */ define('COOKIE_DOMAIN', $_SERVER['HTTP_HOST']); define('COOKIE_DOMAIN', '');
После этого я перестал видеть следующее сообщение об ошибке:
ОШИБКА: Cookies заблокированы или не поддерживаются вашим браузером. Вы должны включить cookies для использования WordPress.
Вход в систему также заработал.

Я тоже столкнулся с этой проблемой и нашел множество решений, подобных упомянутым здесь, но они не сработали.
Что действительно помогло — просто добавить следующую строку в конфигурацию мультисайта в 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);
Публикую это здесь, чтобы другие могли найти решение и потратить меньше времени на борьбу с проблемой, чем потратил я.

Не знаю как вам, ребята, но мне неожиданно сильно помогло изменить это
define( 'COOKIEDOMAIN', '' );
на это
define( 'COOKIE_DOMAIN', '' );
И да, я всё ещё осмеливаюсь считать себя опытным PHP & WP разработчиком. Просто хотел поделиться, что такое случается со всемими. :)

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. Похоже, он был жестко привязан к конкретному сайту и не позволял работать с другими доменами — только с поддоменами. Отличные решения здесь.

ЭТО ПОМОГЛО МНЕ РЕШИТЬ ПРОБЛЕМУ Я не полностью настроил WordPress для нового доменного имени. Я создал свой сайт на subdomain.domain.com Затем я хотел использовать newdomain.com вместо subdomain.domain.com Для этого потребовалось:
- В WordPress Сеть > Администрирование > Сайты изменить название сайта на новое (что я уже сделал, сайт работал)
- В WordPress Сеть > Администрирование > Настройки > Домены добавить новое имя для ID сайта и отметить галочкой как основной домен (чтобы указать, что это имя является основным). Чтобы найти ID сайта, можно навести курсор на пункт Сеть > Администрирование > Сайты, где будет указано, с каким ID сайта вы работаете. Надеюсь, это поможет тем, кто получал сообщение о том, что cookies заблокированы или не поддерживаются при попытке входа. С наилучшими пожеланиями, SamTapsell

Мне удалось решить проблему после добавления следующего кода в 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 ) );

Я решил проблему следующим образом:
Изменил настройку 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.

Вот что мы используем в 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', '/'); // Путь для кук админки
