Здравствуйте. Сайт имеет имя mysitename.com, во внутренней сети у него адрес хх.ххх.ххх.хх. На прокси-сервере предприятия сделали редирект с mysitename.com на хх.ххх.ххх.хх. Всё вроде бы работает нормально. Но вот в моём модуле на форме, по сабмиту нужно перейти на другой урл. Я это реализовал через drupal_goto('mymodulename/view'); но вместо того что бы перейти на нужный мне урл, попадаю на главную страницу сайта. Понятно, что функция drupal_goto построит урл - http://mysitename.com/mymodulename/view и это правильно, но мне нужно, для внутренней сети, что бы переход осуществился по адресу http://хх.ххх.ххх.хх/mymodulename/view. Не подскажете, как такое сделать? Спасибо.
Комментарии
Гемороя то сколько.
В виндах работаете?
Строчку нужно прописывать в файл хост на всех компах с которых вы хотите иметь нормальный вход по имени сайта.
А если у вас где то там внутри стоит Windows Server (2000, 2003 или 2008), то ему добавьте роль еще одну. DNS - сервер. И там внутрь опубликуйте свой сайт.
Та такое сделано, все правильно, но нужно в броузере поставить исключение для прокси на этот сайт. А есть куча филиалов, и куча людей работает. Это не выход, бегать по всем юзерам и делать в броузере исключение. Костыли то я поставил, но костыли и есть костыли. Нужна красивая реализация.
А ДНС сервер включить на одном компе тоже геморойно?
Это называется dnat, делается на роутере через который все в локальной сетке выходят в инет, в том числе на ваш сайт, только условие пишется так, что все кто из внутренней сети лезет на этот сайт на порт 80 переслать нафиг на сервер с ip таким-то порт 80, они даже не поймут что ушли на другой сайт. правда трафик будет идти через роутер.
Так выше я написал, что такое сделали, только не роутером, а средствами прокси-сервера. У кого интернета нет, тот через прокси не ходит и соответственно подставляется всё нормально внутренним днс-сервером. А тем у кого интернет есть, нужно поставить исключение на прокси, но не будешь ты ж бегать по куче юзеров.
Вот в модуле меню я тоже указываю друпаловский путь, и люди которые заходять на хх.ххх.ххх.хх то Друпал достривает путь хх.ххх.ххх.хх/?q=node/1 а в праймари-линкс стоит на пункт меню адрес - node/1
в моём модуле на кнопке сабмит была конструкция
$form_state['redirect'] = 'mymodule/view/';
и такая конструкция
drupal_goto('mymodule/view/');
но эти конструкции выстраивают адрес http://mysaitename.com/mymodule/view/ а прокся не понимает, нужно что бы было
http://хх.ххх.ххх.хх/mymodule/view/, какой модуль друпала посмотреть, что бы реализовать и в своём коде такое же?
с помощью dnat на роутере, максимум чтобы вы сделали, это в днс указали вместо ip адреса текущего сервера адрес роутера, это раз, и второе задали бы два правила, что те кто из инета идет переслать туда то, а те кто из внутренней сети слать туда то. И те и другие как ходили на сайт по имени а не по ip так и ходят, только внутренние юзеры даже не заметят что их на другой сервер редиректят, или сервер один и тот же все таки, тогда нафига такие танцы с бубном.
И даже если drupal_goto построит адрес в котором будет имя, перередиректит он его опять таки на нужный сервер.
Почему бы если на то пошло не указать полный адрес самому для drupal_goto
$path A Drupal path or a full URL. Воспользуйтесь функцией
http://api.drupal.org/api/drupal/includes--common.inc/function/url/6
а потом скормите его в drupal_goto, предварительно заменив адрес сайта на ip.
Да и в settings.php кто мешает заменить
$base_url = 'http://localhost'; // NO trailing slash!
на ip
возможно по условию проверите что ip источника из вашей сетки
в _SERVER["REMOTE_ADDR"]
и динамически будете менять $base_url, если конечно drupal-u крышу не снесет от этого
Хочу поблагодарить за ответы всех кто откликнулся.
То Xermit: сделал почти так как вы предложили, то есть костыли. Ну пока работает. Но это не правильно. Ещё раз, спасибо.