我们有一个ExpressionEngine网站,我们通过http和https访问。我们的用户在通过https访问时从IE获取安全警告,因为某些资产被不安全地访问(在这种情况下引用了CSS和图像)。
当设置'General Config - >时会发生这种情况。您站点根目录的URL包括http://协议标识符(该字段为空,仅设置为站点域[example.com],或者在没有协议的情况下设置[//example.com/],我们遇到其他问题,所以那些不是真正的选择)。当然,有问题的网址是在模板中使用{path =}或{stylesheet =}生成的网址。
是否有通过与页面相同的协议获得所有资产的好方法?
谢谢, 斯科特
答案 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