原因:
希望在管理员登录时使用https
但用户查看则使用http
因此网站需要同时启用https和http。
问题描述:
js和css的路径都不是相对路径,导致启用https后显示不正常。
在本地机器上测试同时启用http和https
使用https://site.org的方式登录时,显示的文件url还是http的:
比如js和css的,都是以http的方式链接的,这样在chrome浏览器下就显示不正常。
在setting.php中已经设置了$["conf"]=true;
另外$base_url没有做设置。
如果做如下设置:
$base_url='';
此时链接js和css的路径都是相对路径了,网站显示正常了,但是又出现如下错误:
如设置base_url为https的地址:
$base_url='https://site.org';
那么在部分浏览器上又显示不了,js和css都是链接的https的路径;另外,也不利于js和css的压缩。
你安装http://drupal.org/project/
你安装http://drupal.org/project/securepages 模块了吗,我看这个模块支持https,不知道你装了这个模块没有,此外这个模块好像还需要安装补丁。
以前没有遇到过https,只有Ubercart的结算页面,个别时候会用到。
http://drupal.org/project/sec
http://drupal.org/project/securepages
这个模块我知道,它支持的ssl协议是mixer的。就是http和https混合的方式,似乎不大适合。具体的,我再测试一下看看,但终究不是很合适,因为http和https混合的方式,http的cookie还是可以被劫持的。
我现在是需要在http登录的时候正常显示http,https的时候则完全使用https的方式。
因为https只在管理时使用,证书是自签名的。目前通过设置base_url的为https://site.org的方式可以正常使用https,但是那样的话http访问的时候也使用了https链接js和css,那样会因为证书错误而导致js和css不能正常加载,导致页面显示不正常。
如果设置base_url为http://site.org的方式,则IE访问每次会提示有未加密内容是否显示,而chrome则直接把页面显示得乱乱的。
js和css能使用相对路径也可以实现我的需求。 但是目前我
js和css能使用相对路径也可以实现我的需求。
但是目前我安装的drupal都是绝对路径的。
不知道老葛是否有办法?
办法肯定是有的,你可以在html.tpl.php里面写个I
办法肯定是有的,你可以在html.tpl.php里面写个IF语句:
当当前用户为管理员时,手动的把JS/CSS文件输出出来,把https写死在里面。
另外就是实现hook_page_alter,对script, styles变量进行操作,如果里面已经是以http开头了,将它们替换成https即可。
这样通用性太差了吧。 有办法判断schema然后再指定h
这样通用性太差了吧。
有办法判断schema然后再指定http或者https吗?
不过记得之前nemo的站点,js和css是相对路径的。不知道他怎么实现的。
能解决问题的办法,就是好办法。
能解决问题的办法,就是好办法。