繁体   English   中英

通过http和https的ExpressionEngine访问

[英]ExpressionEngine access via both http and https

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

当“常规配置->您网站根目录的URL”设置中包含http://协议标识符时(该字段为空白,仅设置为站点域[example.com],或不设置协议而设置),就会发生这种情况[//example.com/],我们还会遇到其他问题,因此这些并不是真正的选择)。 有问题的URL当然是在模板中使用{path =}或{stylesheet =}生成的URL。

是否有一种很好的方法来获取通过与页面相同的协议交付的所有资产?

谢谢,斯科特

这是因为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 (商业)

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

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

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

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

您可以使用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的Config Bootstrap文件或文章为多个服务器配置ExpressionEngine 有关您可以在config.php设置的所有路径,请参阅EE2 Config Overrides。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM