我目前正在开发一个Drupal网站(6. *),它在生产模式下将通过某种http代理访问,这意味着如果{我必须重写我的自定义主题的所有链接{1}}变量设置为人们将从中访问网站的域。
该网站有很多内部链接,主要是通过$_SERVER['HTTP_X_FORWARDED_SERVER']
。我的想法是,解决这个问题的最简单方法是挂钩Views
和/或url()
函数,并在设置l()
之前对其进行后处理,然后再返回它。
我的问题是我无法弄清楚如何挂钩这些功能,或者如果没有触及核心甚至可能,有人必须这样做吗?你是怎么解决的?
更新:我想我忘了提到代理不会位于代理域的根级别,所以我需要重写所有网址(内部链接和系统生成的路径到css文件和图像等)
示例:
HTTP_X_FORWARDED_SERVER
proxy.com/path -> site.com/lots/of/dirs
proxy.com/path/node/1 -> site.com/lots/of/dirs/node/1
答案 0 :(得分:3)
我不确定我是否完全理解您的需求,但我认为您应该查看custom_url_rewrite_inbound()和custom_url_rewrite_outbound()函数。
答案 1 :(得分:1)
我最终不得不稍微修改核心,替换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网址设置了一个新的网站文件夹,并更改了settings.php中的$base_url
和$cookie_domain