ситуация такая: в конторе есть интранет и там для внутренних сайтиков выделяется адрес: "http://<внутр. домен>/~user", снаружи этот же сайт доступен по адресу: "http://<внешний домен>/web/~user" доступа к сервакам у меня нет... ставлю drupal все проходит нормально, но после установки работает только изнутри из интранета.. при попытке доступа извне - на главной странице выдает только текстовку - без оформления и картинок - ясное дело проблема в ссылках... ссылки выставляет "http://<внешний домен>/~user/..." (пропуская промежуточное /web)... нахожу в settings.php переменную base_url - прописываю там полный путь до корня сайта из внешнего интернета - вроде начинает работать: картинки и оформление грузится но почему-то не пускает в админку - при неверном логине/пароле ругается, при верном просто перегружает страницу как будто ничего и не вводили... - сессия не заводится?странно очень.... ну и понятное дело перестает работать из интранета...
подскажите как можно разрешить все так, чтобы работало с обоих адресов? у самого пока родилось только поискать модуль ответственный за прописание ссылок и выяснять там текущий адрес и жестко в начало дописывать один или другой вариант (но это в надежде что все ссылки проходят через один и тот же модуль)... но может есть способ изящней?
Комментарии
изящнее сделать поддомен?
админы у нас больно консервативные... не хотят ничего менять
одна машина не может ехать по московской и лениной одновременно, как и друпал)
все что идет после http://<внешний домен>/... многоточия руководится друпалом.
Зы: Может модуль Pathauto (хотя маловероятно)
А по принципу мультисайтинга, только с одной БД не пробовали?
Смысл, разделить settings.php для внешнего и внутреннего адреса (разные $base_url)
в папке /sites создаете 2 папки /sites/внешний_домен , /sites/внутренний_домен
в обе папки кидаете settings.php и устанавливаете $base_url как надо
как я понял,
для внутреннего: $base_url = http://<внутр. домен>/~user
для внешнего: $base_url = http://<внешний домен>/web/~user
Настройки БД одинаковые.
была мысль что это может помочь - но не уверен был (я вообще drupal первый раз "вижу", поэтому не очень в теме.. пытаюсь разобраться... хотя ранее был опыт php программирования). Заодно подскажите: разные папки внутри site какие файлы должны/могут теоретически содержать, кроме settings.php, и не придется ли потом решать вопросы синхронизации между двумя версиями одного сайта (про то что базу одну можно использовать я понял, но всеже..)
и еще камень в огород этого способа: не пойму почему возникли проблемы с авторизацией в админку при изменении $base_url = http://<внешний домен>/web/~user (еще раз: на неверные логин/пароль реагирует ожидаемо, на верные - никак не реагирует - то есть опять предлагается ввести логин пароль без всяких ошибок) - при пустом base_url из интранет с авторизацией все нормально.
ЗЫ. Буду пока экспериментировать с подстановкой base_url в common.inc...
если сайты работают каждый на своей БД,там же можно разместить папки themes modules для персональных тем и модулей сайта, но в вашем случае этого не нужно, достаточно только settings.php и в нем правильно прописать $base_url
как раз в этом все и дело, если не указывать явно $base_url то его значение по умолчанию берется (если не ошибаюсь) Имя_домена из запроса.
Если вы явно указали $base_url для внешнего адреса, то для внутреннего он будет неправильным..
А данные сесии пишутся в куки, а куки "привязываются" домену(он же базовый урл).
Поэтому и авторизация не "сохраняется"
Если базы не разделять(использовать одну) то ничего синхронизировать ненадо, сайты будут различаться только значением переменной $base_url.
Кстати... если способ с указанием для каждого адреса своего settings.php ненравиться, можно в дефолтном settings.php анализировать адрес запроса и присваивать $base_url нужное значение.
уфф... вроде сделал... мультисайтинг не пошел - как оказалось $_SERVER['HTTP_HOST'] выдавал всегда <внутренний домен> внезависимости откуда я зашел изнутри или снаружи (при том что в адресной строке может стоять именно <внешний домен>) - видимо поэтому-же при мультисайтинге - сколько я не создавал директорий под внешний домен - он все равно ходил через settings внутреннего
почему оно так - без доступа к серверу я видимо не узнаю... эмпирическим путем нашел $_SERVER['HTTP_X_FORWARDED_SERVER'] который дает то что нужно. В итоге в файле settings.php единственного сайта прописал
$base_url = 'http://'.$_SERVER['HTTP_X_FORWARDED_SERVER'].'/web/~user'; // NO trailing slash!
}
пока вроде работает.. но надо погонять - вдруг этот forwarded может нитуда сослаться... спасибо за наводки!
кстати с авторизацией решилось аналогично, только с переменной $cookie_domain
хмм.. погонял - обнаружилось по крайней мере что в form action="" подставляется адрес без домена то есть /~user/... что в моем случае при заходе извне пропускает проставку /web/
в итоге никакие настройки в админке не работают... завтра буду копать дальше...
аналогичная проблема. удалось решить?