我想将我的网站从http
更改为https
。总是
所以我相应地配置了我的apache。现在,当我输入我的网站的网址(https://steamnet.de)时,它会加载索引网站,但没有引用的元素(CSS,图像等)
在我看来,这样做是因为base href
设置为http://steamnet.de/
而thous不使用https
。我已经配置了我的Firefox,它不应该加载混合内容。
那么我如何告诉Joomla将base href
设置为https://steamnet.de
(或以其他方式使网站完全ssl
?)
我尝试将joomla配置的全局ssl enforce元素(德语中的“SSL erzwingen”,$force_ssl
中的configuration.php
)设置为“所有内容”,但随后网站中断了无限{{1}错误重定向到自身。 (作为事后的想法:我很惊讶在这里找到了303
而不是303
。如果有人能解释我会感激不尽)
(Laoneo提出了一些解决方案,但没有解决,完整性在这里是列表)
301
配置为$live_site
网址。https
和$sef
是否有帮助。 apache日志:
$sef_rewrite
access.log
91.42.221.000 - - [03/Nov/2013:12:41:25 +0100] "GET / HTTP/1.1" 303 4854 "-" "Mozilla/5.0 (Gecko) Firefox/64"
91.42.221.000 - - [03/Nov/2013:12:41:25 +0100] "GET / HTTP/1.1" 303 516 "-" "Mozilla/5.0 (Gecko) Firefox/64"
91.42.221.000 - - [03/Nov/2013:12:41:25 +0100] "GET / HTTP/1.1" 303 516 "-" "Mozilla/5.0 (Gecko) Firefox/64"
不包含访问权限,但error.log
reload
答案 0 :(得分:21)
对不起,我不认为目前的答案是对的。这个答案促进了黑客攻击并解决了这个问题。下次更新Joomla时,您必须更新核心文件,因为它将被覆盖。
实际上,如果我们在getInstance中查看JURI的代码,我们可以看到:
// Determine if the request was over SSL (HTTPS).
if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off'))
{
$https = 's://';
}
else
{
$https = '://';
}
问题是为什么有些服务器显然没有初始化$ _SERVER [' HTTPS']。虽然我无法告诉你原因,但我发现的工作是在开头时将这些行添加到.htaccess文件中:
<IfModule mod_env.c>
SetEnv HTTPS on
</IfModule>
通过这样做,$ _SERVER [&#39; HTTPS&#39;]似乎已初始化,Juri :: current将返回我们所期望的 - 一个以https开头的网址。
答案 1 :(得分:7)
检查configuration.php文件中的* $ live_site *变量,并将其更改为您的https地址。
答案 2 :(得分:5)
注意:这是一个黑客攻击。请先测试Daniel Dimitrovs answer。如果有效,请在此留言。
我找到了一个解决方法。
在文件includes/application.php
中,我更改了以下块
if($router->getMode() == JROUTER_MODE_SEF) {
$document->setBase(JURI::current());
}
为:
if($router->getMode() == JROUTER_MODE_SEF) {
$document->setBase(JURI::root());
}
我不知道为什么JURI::current()
会返回http
网址而不是https
,但在此更改后网站会按预期工作。
小心:在更改之后,管理员部分被破坏,直到我在force_ssl
中禁用了configuration.php
。我通过我的apache配置强制执行SSL,这对我来说不是问题。
答案 3 :(得分:0)
完全删除<base>
标记可以解决您的问题。您可以在模板的index.php
文件中执行此操作,如下所示:
$doc = JFactory::getDocument();
unset($doc->base);
由于这不是核心攻击,因此它将是升级版本。但是,如果您使用主题商店中的模板,并选择将来升级模板,则可能需要重新添加代码。
参考文献: