2

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

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

有没有一种通过与页面相同的协议交付所有资产的好方法?

谢谢,斯科特

4

3 回答 3

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(商业)

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

于 2012-08-31T08:17:34.000 回答
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 的 Config Bootstrap 文件或文章为多个服务器配置 ExpressionEngine。对于您可以设置的所有路径config.php,请参阅EE2 Config Overrides

于 2012-09-05T03:56:54.777 回答
0

是否需要包含根 URL?很多时候,我会将站点的根 URL 设置为“/”。

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

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

于 2012-08-31T02:16:36.630 回答