Настройка COOKIE_DOMAIN и возникающие сложности

19 янв. 2016 г., 21:50:54
Просмотры: 32.5K
Голосов: 4

Я обновляю свой сайт на WordPress. Я использую поддомен cdn для CDN, и он должен быть без куки-файлов.

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

Для такого типа мульти-сети я использую плагин: https://github.com/stuttter/wp-multi-network

Мне нужно использовать единый вход (Single Sign-on). И это приводит к путанице при настройке COOKIE_DOMAIN в wp-config.php. Я могу установить значение, как указано в документации плагина:

define( 'COOKIE_DOMAIN',     'mydomain.com'        );

но я знаю, что это приведет к тому, что куки будут отправляться также с cdn.mydomain.com.

Как можно настроить COOKIE_DOMAIN, чтобы куки отправлялись только с двух поддоменов www и photo?

Или мне нужно использовать другое доменное имя только для CDN?

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

Является ли cdn.mydomain.com одним из сайтов в вашей сети WordPress?

David David
20 янв. 2016 г. 01:14:25

Нет. cdn.mydomain.com размещён на другом сервере (Google App Engine).

LQ2' LQ2'
20 янв. 2016 г. 06:15:40

Тогда это предложение сбивает с толку: »но я знаю, что это приведёт к тому, что куки будут обслуживаться с cdn.mydomain.com«. Почему константа в вашей конфигурации WP должна влиять на другие хосты?

David David
20 янв. 2016 г. 11:38:49

Спасибо! Я только что протестировал свой сайт с помощью YSlow на GTmetrix. Мой CDN теперь работает без куков с этим параметром.

LQ2' LQ2'
20 янв. 2016 г. 16:18:04
Все ответы на вопрос 2
3

Я долго боролся с использованием мультисайтовых доменов в нативной WordPress версии 4.x.

Несмотря на найденные рекомендации, что эти строки исправляют ошибку, ни одна из этих настроек не сработала:

//define('COOKIE_DOMAIN', false);
//define( ‘COOKIE_DOMAIN’, $_SERVER[ ‘HTTP_HOST’ ] );

В итоге я добавил следующие строки кода, и это сработало идеально...

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

Не уверен, подойдет ли это вам?

  • Я публикую это в основном для будущих искателей, у которых возникнут аналогичные проблемы.
24 февр. 2017 г. 03:48:52
Комментарии

Это полностью сломало мой сайт

Adal Adal
30 янв. 2018 г. 04:16:58

Если это сломало ваш сайт, просто удалите код и войдите заново, установив исходные значения. Этот код просто устанавливает значения cookies, он не затрагивает базу данных и т.д. Примечание: мой сайт работает в корневом каталоге (domain.com/), так что если ваш сайт в подкаталоге (domain.com/wordpress), вам нужно установить cookiepath как /wordpress/

Wayne Brian Pearsall Wayne Brian Pearsall
31 янв. 2018 г. 23:47:21

Привет, Wayne, это первое, что я попробовал. Однако ни удаление этих определений, ни установка других значений не помогли восстановить работу сайтов. У меня был ограниченный успех с использованием sunrise.php... но так и не получилось войти в систему. Я работаю на Google Cloud VM. В итоге я восстановил снимок диска и оставил надежды, что нативное мультидоменное отображение WPMU может работать. Я вернулся к использованию плагинов.

Adal Adal
2 февр. 2018 г. 00:44:14
0

Поскольку cdn.mydomain.com не является частью вашей сети WordPress, он не будет затронут вашими настройками.

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

20 янв. 2016 г. 16:27:13