通过http和https访问ExpressionEngine

时间:2012-08-30 15:49:21

标签: expressionengine

我们有一个ExpressionEngine网站,我们通过http和https访问。我们的用户在通过https访问时从IE获取安全警告,因为某些资产被不安全地访问(在这种情况下引用了CSS和图像)。

当设置'General Config - >时会发生这种情况。您站点根目录的URL包括http://协议标识符(该字段为空,仅设置为站点域[example.com],或者在没有协议的情况下设置[//example.com/],我们遇到其他问题,所以那些不是真正的选择)。当然,有问题的网址是在模板中使用{path =}或{stylesheet =}生成的网址。

是否有通过与页面相同的协议获得所有资产的好方法?

谢谢, 斯科特

3 个答案:

答案 0 :(得分: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(商业)

(没有特别的顺序)我没有使用任何这些,所以不能推荐一个特定的,因为我使用自己的插件。

答案 1 :(得分:0)

您是否需要包含根URL?通常,我会将网站的根网址设置为“/”。

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

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

答案 2 :(得分: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