Вопрос

В настоящее время я работаю над сайтом Drupal (6.*), доступ к которому в рабочем режиме будет осуществляться через какой-то http-прокси, что означает, что мне придется переписать все ссылки для моей пользовательской темы, если $_SERVER['HTTP_X_FORWARDED_SERVER'] переменной задается домен, с которого пользователи будут получать доступ к сайту.

На сайте много внутренних ссылок, в основном через Views.Я думаю, что самый простой способ решить эту проблему - это подключиться к url() и/или l() функции и последующая обработка URL-адреса перед его возвратом, если HTTP_X_FORWARDED_SERVER установлен.

Моя проблема в том, что я не могу понять, как подключиться к этим функциям, или, если это вообще возможно, не прикасаясь к ядру, кто-нибудь должен был это делать?Как вы это решили?

Обновить:Наверное, я забыл упомянуть, что прокси-сервер не будет расположен на корневом уровне прокси-домена, поэтому мне нужно переписать все URL-адреса (как внутренние ссылки, так и пути, сгенерированные системой к CSS-файлам, изображениям и т.д.)

Примеры:

proxy.com/path -> site.com/lots/of/dirs

proxy.com/path/node/1 -> site.com/lots/of/dirs/node/1

proxy.com/path/sites/all/themes/mytheme/my.css -> site.com/lots/of/dirs/sites/all/themes/mytheme/my.css

Это было полезно?

Решение

Я не уверен, что полностью понимаю, что вам нужно, но я думаю, вам следует взглянуть на пользовательский_url_rewrite_inbound() и пользовательский_url_rewrite_outbound() функции.

Другие советы

В итоге мне пришлось немного изменить ядро, заменив строку ниже в bootstrap.inc

$server = explode('.', implode('.', array_reverse(explode(':', rtrim($_SERVER['HTTP_HOST'], '.')))));

с

$host = $_SERVER['HTTP_X_FORWARDED_HOST'] ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['HTTP_HOST']; 
$server = explode('.', implode('.', array_reverse(explode(':', rtrim($host, '.')))));

Затем я просто создал новую папку сайта со своим proxy.com url и изменил $base_url и $cookie_domain в settings.php

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top