база joomla HREF использует HTTP вместо HTTPS
я хотел изменить свой сайт с http
to https
. Всегда.
поэтому я настроил свой apache соответственно. Теперь, когда я ввожу URL моего сайта (https://steamnet.de) он загружает сайт индекса отлично, но ни один из ссылочных элементов (CSS, изображения и т. д.)
мне кажется, что это так, потому что base href
установлено значение http://steamnet.de/
тыс. руб. и не использовать https
там. Я настроил свой firefox, чтобы он не загружался смешанным содержание.
Итак, как я могу сказать Joomla установить base href
до https://steamnet.de
(или иным образом сделать сайт полностью ssl
?)
я попытался установить глобальный элемент SSL enforce конфигурации joomla ("SSL erzwingen" на немецком языке,$force_ssl
на configuration.php
) до "всего", но тогда сайт ломается с бесконечным 303
ошибка перенаправления к себе. (Как запоздалая мысль: я был удивлен, обнаружив 303
вместо 301
здесь. Если бы кто-нибудь мог объяснить, что я был бы благодарен)
(Laoneo предложил некоторые решения, которые не сработали, для полноты вот список)
- настроить
$live_site
доhttps
URL-адрес. - - зонда при изменении
$sef
и$sef_rewrite
помогает.
журналы apache:
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
[Sun Nov 03 12:41:16 2013] [notice] Graceful restart requested, doing restart
[Sun Nov 03 12:41:16 2013] [error] (9)Bad file descriptor: apr_socket_accept: (client socket)
[Sun Nov 03 12:41:17 2013] [warn] RSA server certificate CommonName (CN) `Angelo Neuschitzer' does NOT match server name!?
[Sun Nov 03 12:41:17 2013] [notice] Apache/2.2.16 (Debian) PHP/5.3.3-7+squeeze17 with Suhosin-Patch proxy_html/3.0.1 mod_ssl/2.2.16 OpenSSL/0.9.8o configured -- resuming normal operations
4 ответов
извините, но я не думаю, что текущий ответ действительно правильный. Этот ответ способствует взлому и обходит проблему. В следующий раз, когда вы обновите Joomla, вам придется обновить основной файл, потому что он будет переопределен.
На самом деле, если мы посмотрим в коде для JURI в getInstance, мы увидим это:
// 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 ['HTTPS'], кажется, инициализируется, и Juri::current вернет то, что мы ожидаем - url, начинающийся с https.
Проверьте переменную* $live_site * в вашей конфигурации.php-файл и измените его на свой https-адрес.
внимание: это хак. Пожалуйста, сделайте тест Даниил dimitrovs не ответ первый. Если это сработает, пожалуйста, оставьте мне комментарий здесь.
я нашел работу вокруг.
в файле 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
URL вместо https
но после этого изменения сайт работает, как ожидалось.
осторожно: после этого изменение части администратора было нарушено, пока я не отключил force_ssl
на configuration.php
. Я применяю SSL через мою конфигурацию apache, чтобы это не было проблемой для меня.
удаление <base>
тег в целом должен решить ваши проблемы. Вы можете сделать это в index.php
файл вашего шаблона выглядит так:
$doc = JFactory::getDocument();
unset($doc->base);
поскольку это не основной Хак, он будет защищен от обновления. Однако если вы используете шаблон из хранилища тем и решите обновить шаблон в будущем, возможно, придется добавить код обратно.
ссылки: