我目前正在使用Drupal网站(6.*),该网站将通过某种HTTP代理访问生产模式时,这意味着我将不得不重写我自定义主题的所有链接 $_SERVER['HTTP_X_FORWARDED_SERVER'] 变量设置为域名人们将访问该站点的域。

该网站具有很多内部链接,主要是通过 Views. 。我的想法是,解决此问题的最简单方法是将 url() 和/或 l() 如果在返回URL之前,请在返回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

有帮助吗?

解决方案

我不确定我是否完全了解您的需求,但我认为您应该看看 custom_url_rewrite_inbound()custom_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