2012-08-30 93 views
2

我们有一个ExpressionEngine网站,我们通过http和https访问。当通过https访问时,我们的用户会收到来自IE的安全警告,因为一些资产不安全地访问(在这种情况下引用CSS和图像)。ExpressionEngine通过http和https访问

当设置'General Config - > URL到你的站点的根目录'包含http://协议标识符时(这个字段为空,只设置为站点域[example.com]),或者没有协议[//example.com/]设置,我们遇到其他问题,所以这些不是一个真正的选择)。有问题的URL当然是模板中的{path =}或{stylesheet =}生成的。

有没有一种很好的方式来获取通过与页面相同的协议传递的所有资产?

感谢, 斯科特

回答

1

这是因为EE变量默认不检测或使用https,因此您必须将它们设置为代码。最简单的方法是使用一个附加:

http://devot-ee.com/add-ons/https-support

http://devot-ee.com/add-ons/dm-force-ssl

http://devot-ee.com/add-ons/force-ssl(商业)

(排名不分先后),我没有用任何的这些所谓能”当我使用我自己的插件时,推荐一个特定的插件。

+0

好吧,真棒 - HTTPS支持正是我一直在寻找的。这是一个很好的简单扩展,如果通过https访问,会话中的EE'base_url'(等等)会重置。 –

0

你需要包含根网址是什么?通常我会将网站的根网址设置为“/”。

另一种选择是手动包含这些资产(不使用路径或样式助手)。

如果一个URL是真实的,它将自动继承当前的协议。

+0

当我使用'/'时,保存控制面板中的条目中断 - 特别是Pages模块抱怨有关错误的URL。是的,我可以手动编写URL,但这里要保留{path =}和朋友的优点。 –

0

您可以使用PHP检测协议,并在您的system/expressionengine/config/config.php文件中动态设置它。我用的是这样的:

$protocol = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https://" : "http://"; 
$base_url = $protocol . $_SERVER['HTTP_HOST']; 

$config['base_url'] = $base_url . "/"; 

您可以从这个基础上在config.php建立你的主题的路径,不同的图像路径,上传路径等所有。但$config['site_url']是什么影响{path=""}{stylesheet}标签的输出。

欲了解更多信息,请参阅NSM's Config Bootstrap file或文章Configuring ExpressionEngine for multiple servers。对于您可以在config.php中设置的所有路径,请参阅EE2 Config Overrides

+0

感谢一些更好的选择。为了简单起见,[HTTPS支持](http://devot-ee.com/add-ons/https-support)在一个小扩展中做到这一点;它还处理site_url和其他一些不常用的设置,这很酷。我喜欢在config.php中做这件事的想法,或者从那里需要的东西,然后把它放到我的工具箱中! –