Переопределить функцию l () в Drupal - PullRequest
2 голосов
/ 10 января 2011

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

Сайт имеет много внутренних ссылок, в основном через 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

Ответы [ 2 ]

3 голосов
/ 10 января 2011

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

1 голос
/ 10 января 2011

Мне пришлось немного изменить ядро, заменив строку ниже в 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, '.')))));

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

...