Что мне нужно:
Мне нужен сайт с несколькими поддоменами (информация будет в одной базе, а также общая база пользователей). Но на разных поддоменах будут разные темы оформления и отображаемая информация. Когда пользователь залогинился на одном из сайтов, то при переходе на другой поддомен авторизация не должна теряться.
Что делал по шагам:
Поставил Drupal 6.6 (с русификацией).
Поставил модуль Domain Access. Включил его. Создал парочку поддоменов.
Поставил модуль Shared Sign-On. Включил интеграцию с модулей Domain.
Удалил все cookie. Захожу на один из сайтов. Авторизуюсь. Перехожу на другой сайт из этой же связки, и меня уже не узнают. Т.е. надо по новой логиниться.
Уже который день бьюсь над проблемой, не пойму почему не работает единая авторизация (кстати база пользователей одна на все сайты).
Может кто подскажет в чем дело или как решить данную проблему.
Комментарии
Решил проблему сам. Всё оказало очень просто.
Я вообще отключил модуль Shared Sign-On.
И прочитал файл с документацией по установке Domain Access.
И раскомментировал строку в файле settings.php:
$cookie_domain = ".example.com";
И прописал туда свой основной домен. Следовательно эти куки будут распространятся и на поддомены.
Насколько я понимаю, чтобы работала единая авторизация, вполне достаточно строки
Таблицы user* и session у вас в общей базе, поэтому модуль Domain Access в общем-то и не нужен. По крайней мере для этих целей.
Лично меня волнует вопрос единой авторизации на совершенно разных сайтах (не поддоменах).
Если знаете - подскажите как сделать.
По просьбе интересующихся данным модулем написал подробнее что и как делал по настройке Domain Access.
Я устанавливал Domain Access по инструкции INSTALL.txt
Включил следующие модули:
Согласно инструкции в файл settings.php добавил следующее
$cookie_domain = 'my_domain.ru';
/**
* Add the domain_prefix tables
*/
require_once './sites/all/modules/domain/domain_prefix/settings_domain_prefix.inc';
/**
* Add the domain_conf settings override
*/
require_once './sites/all/modules/domain/domain_conf/settings_domain_conf.inc';
/**
* Add the custom_url_rewrite_outbound function.
*/
require_once './sites/all/modules/domain/settings_custom_url.inc';
$base_url оставил закомментированным.
В настройках сервера (Apache) прописал примерно следующее:
ServerAdmin webmaster@mail.ru
DocumentRoot /var/www/www.my_domain.ru/www
ServerName www.my_domain.ru
ServerAlias site1.my_domain.ru
ServerAlias site2.my_domain.ru
ErrorLog logs/www.my_domain.ru/error_log
CustomLog logs/www.my_domain.ru/access_log combined
</VirtualHost>
Не забываем после этого перегрузить Apache.
В административной части сайта (admin/build/domain/create) создал домены: site1.my_domain.ru и site2.my_domain.ru.
Ну и вроде всё.
хм.. сделал всё так же, завёл 2 поддомена, вроде бы работает, но! Если создать к примеру страничку и привязать его к новому поддомену (при создании, в моём случае страница привязана в minsk), то эту страницу будет видно и на другом поддомене.
Вот пример:
Minsk.mysite.com
Krasnoyarsk.mysite.com
Вы с этим не сталкивались?
Да, есть такой эффект, что страница доступна на всех поддоменах.
Я решаю это следующим образом: при создании материала на сайте ставлю галочки на каких доменах публиковать (в блоке Domain access options параметр Publish to: site1, site2). В правах есть соответствующие настройки видимости блока с галочками различным ролям.
«при создании материала на сайте ставлю галочки на каких доменах публиковать (в блоке Domain access options параметр Publish to: site1, site2).»
кстати, вот это вот не работает. Даже если отмечать чекбоксом, к какому домену относить, всё ровно везде отображается и даже кстати если убрать галочку: "Send to all affiliates".
Я правда так и не понял, как вы это решили
В правах есть соответствующие настройки видимости блока с галочками различным ролям.
а это зачем? Как это повлияет на отображаемость контента на том или ином домене?)
Галочку "Send to all affiliates" надо снять, иначе будет публиковаться на всех поддоменах.
И ещё забыл сказать, надо обновить права доступа на странице admin/content/node-settings
А про права я сказал, что можно ограничить различным группам пользователей отображение блока с выбором на каком домене публиковать материал.
Ну так я и снял галочку "Send to all affiliates", публикуется всё ровно везде
Я вот думаю теперь, тот ли это модуль.. который мне нужен, мне нужно было так, чтобы можно было публиковать материалы и относить их к определённому домену, чтобы у каждого домена главная страница была своя: своё содержание, своё меню. Кстати меню никак здесь нельзя привязывать так же как и блоки, похоже что придётся всё ручками доделывать..
На самом деле всё это можно сделать.
Первый домен
Второй поддомен
Можно создавать сколько угодно меню. А блоки привязываются к разным темам. А темы можно делать для каждого поддомена свои.
А Вы обновили права доступа?
Права доступа - обновил.
Кстати, хотел спросить на странице: admin/build/domain, пишут про patch - вы патчили э'b файлы, которые там требуют пропатчить? См. аттач
Ещё хотел бы уточнить что я работаю с версией Domain Access 6.x-1.2. Я не помню чтобы патчил. В INSTALL.txt написано, если это выводится сообщение, то PHP не может найти файл включения.
Практически со всем разобрался, Вам большое спасибо.
Но вот одно меня мучает, что у меня не работают: Domain access options. Publishing options:
Отмечаю при создании, нужный поддомен.. но он так же везде отображается.
Надо ещё ковыряться.
Кстати, в Opera не работает фишка с разными темами у поддоменов: он показывают дефолтовую.
У меня работает и в Опере разные тема, скорее всего просто закэшировалось.
И ещё посмотрите на странице admin/build/domain/advanced, если там стоит галочка напротив того типа матириала, который Вы пытаетесь опубликовать на разных доменах, то материал будет публиковаться на всех поддоменах. То есть надо снять галочку.
Попробуйте создать новый материал, и сразу поставьте публикацию на определенном домене. И ещё раз обновите права. И посмотрите что получится.
Права доступа - обновил.
ну вооот, теперь в админке "права доступа" - галочками отмечены поля как и раньше, но если не залогинится, то доступ закрыт для всех страниц.
И я уже всё вроде бы сделал, но страницы всё так же на всех поддоменах отображаются
у меня кстати 5-ая версия Drupal, ну и соответственно модуль тоже.
------------------------
на странице: admin/build/domain/edit/1 написано:
http://minsk.conference.irr.ru/ is not responding and may not be configured correctly at the server level. Server code 403 was returned.
Ну у меня то 6-й друпал. Что ещё посоветовать незнаю. Надо, как говорится, уже на месте разбираться и копаться
Добрый день,
У меня сейчас стоит такая же задача. С друпалом до этого не работала, по этому хотела уточнить.
Для осуществления этой задачи и создания субдоменов, мне необходимо только поставить и настроить модуль Domain Access?
Или необходимо отдельно ставить модули для создания субдоменов, такие как subdomain или domain? Спасибо.
Все заработало, но остался вопрос: как сделать чтобы пользователь находящийся на определенном субдомене при публикации материала, не проставляя вручную чекбоксы, публиковался на текущем субдомене и на корневом одновременно + как запретить ему публиковаться из корневого домена?
Спасибо.
есть два домена, 1й домен основной.
Создаю во 2м домене ноду, сохраняю, меня перебрасывает на 1й домен.
в чем трабл?
решение моей траблы http://www.drupal.ru/node/52342