我通过使用htaccess文件强制转换为http来解决了这个问题,但我想知道是否有EE内部的设置可以使两者都可行?
这只在Chrome和IE上发生,我猜这取决于您的浏览器安全设置。
<link rel="stylesheet" href="//www.site.com/site.css">
<script type="text/javascript" src="//www.site.com/site.js"></script>
site_url
,供参考。 - Scott Hepler当我加载CSS和JS时,我从不使用域名,而是设置为相对路径。例如:
<link rel="stylesheet" href="/layout/styles/layout.css" >
如果你尝试这个,会起作用吗?
system/expressionengine/config/config.php
文件中使用PHP设置{site_url}配置,包括协议的动态设置。例如:// Detect protocol and server host
$protocol = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https://" : "http://";
$base_url = $protocol . $_SERVER['HTTP_HOST'];
// Set EE index page
$config['index_page'] = "";
// Set base and site URL
$config['base_url'] = $base_url . "/" . $config['index_page'];
$config['site_url'] = $config['base_url'];
config.php
的基础上构建你的主题路径、各种图像路径、上传路径等等。但是,$config['site_url']
会影响{path=""}
和{stylesheet}
标签的输出。config.php
中设置的所有路径,请参见EE2 Config Overrides。我使用Nginx。
我不知道为什么,但是如果我使用绝对URL(完整路径)而不是相对URL(/
以域名如CreateSean所说开头,//
以协议如Deviarte所说开头),各种浏览器中的资源加载速度显着更快(或者是相对URL加载速度更慢吗?我不知道)。因此,它们的解决方案/做法(我过去一直在使用...现在仍然在使用)都不适用于我的环境。
相反,我在config.php中执行了以下操作:
$config['base_url'] = $_SERVER["scheme_url"];
$config['site_url'] = $_SERVER["scheme_url"];
fastcgi_param scheme_url "$scheme://$host/";
编辑:
在查看bootstrap/configs时,有些人使用在配置变量前添加协议的方法(例如上面未解释的Bacn的评论)。在Nginx中,默认情况下没有HTTPS服务器变量,在您的虚拟主机配置中为php添加ssl,如下所示:
fastcgi_param HTTPS on;
大家好,
这里是我使用Apache和Config.php文件来重写URL的方法,以避免浏览器触发“非SSL内容警告”。我仍然在我的模板中使用{path}和{stylesheet}变量,因为它们太好用了 :)
在Apache的htaccess文件中:
# Set an Apache 'site_url' variable to http when accessed via http:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ - [E=site_url:http://mysite.com]
# Set Apache 'site_url' variable to https when accessed via https
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ - [E=site_url:https://mysite.com]
然后在system/expressionengine/config.php文件中
将以下两行代码添加到您的代码中(确保您没有在配置文件中的其他地方设置这些变量)
$config['base_url'] = $_SERVER["site_url"];
$config['site_url'] = $_SERVER["site_url"];
据我理解,site_url变量是EE用于{stylesheets}和{paths}的变量。
俗话说的“最后一件事”:
如果您仍然收到非SSL警告,请查看源代码并在源代码中搜索“http://”。这些是罪魁祸首。它们是硬编码链接,没有使用base_url/site_url变量设置。
您需要在文章/模板/变量/片段中找到这些http调用,并将这些调用替换为简单的//。
因此,一个调用变成
http://example.com/some_file.html
//example.com/some_file.html.
//example.com/path/to/your/upload/directory
瞧,你应该可以开始了 :)