重写Drupal中的l()函数

重写Drupal中的l()函数,drupal,drupal-6,http-proxy,internal-link,Drupal,Drupal 6,Http Proxy,Internal Link,我目前正在一个Drupal站点(6.*),在生产模式下,将通过某种http代理访问该站点,这意味着如果$\u SERVER['http\u X\u FORWARDED\u SERVER']变量设置为用户访问该站点的域,我将不得不重写自定义主题的所有链接 该网站有很多内部链接,主要通过视图。我的想法是,解决这一问题的最简单方法是挂接url()和/或l()函数,如果设置了HTTP\u X\u FORWARDED\u SERVER,则在返回url之前对其进行后期处理 我的问题是,我不知道如何连接到这些

我目前正在一个Drupal站点(6.*),在生产模式下,将通过某种http代理访问该站点,这意味着如果
$\u SERVER['http\u X\u FORWARDED\u SERVER']
变量设置为用户访问该站点的域,我将不得不重写自定义主题的所有链接

该网站有很多内部链接,主要通过
视图
。我的想法是,解决这一问题的最简单方法是挂接
url()
和/或
l()
函数,如果设置了
HTTP\u X\u FORWARDED\u SERVER
,则在返回url之前对其进行后期处理

我的问题是,我不知道如何连接到这些函数,或者如果不触及核心就可以实现,有人必须这样做吗?你是怎么解决的

更新:我想我忘了提到代理不会位于代理域的根级别,所以我需要重写所有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/mys.css->site.com/lots/of/dirs/sites/all/themes/mys.css

我不确定我是否完全理解您的需要,但我认为您应该看看它的功能和功能。

我最后不得不稍微修改核心,替换bootstrap.inc中的下面一行

$server=explode('.',introde('.',array_reverse(explode(':'),rtrim($_server['HTTP_HOST'],'.'))


然后我用proxy.com url设置了一个新的站点文件夹,并在设置中更改了
$base\u url
$cookie\u domain
。php

更改核心代码不是一个好主意,因为当您尝试更新drupal版本时会遇到问题。我很清楚这一点,但该站点的使用寿命约为三个月,我急于解决这个问题,所以必须这样做。尽管如此,我仍然对这个问题的合法解决方案持开放态度:)在仔细研究之后,这可能是正确的方法(以前从未听说过这些函数),而且它似乎能起到作用,我会记住这一点,以备将来的努力,谢谢:)我的黑客解决方案让我可以选择为每个可以访问该网站的url(包括代理)设置单独的设置文件事实证明,这比我最初计划的更有用,因此我暂时可能会坚持:)我认为,如果您打开$\u SERVER['SERVER\u NAME']变量,您仍然可以区分custom\u url\u rewrite\u inbound()中的不同传入url。确实:)尽管我还需要为代理设置cookie域,并具有不同的数据库连接
$host = $_SERVER['HTTP_X_FORWARDED_HOST'] ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['HTTP_HOST']; 
$server = explode('.', implode('.', array_reverse(explode(':', rtrim($host, '.')))));