Joomla BASE HREF использует HTTP вместо HTTPS

Я хотел изменить свой сайт с http в https, Всегда.

Поэтому я настроил свой Apache соответственно. Теперь, когда я ввожу URL моего сайта ( https://steamnet.de/), он прекрасно загружает индексный сайт, но ни один из элементов, на которые есть ссылки (CSS, изображения и т. Д.)

Мне кажется, что это так, потому что base href установлен в http://steamnet.de/ и не использует https там. Я настроил свой Firefox, чтобы он не загружал смешанный контент.

Так как я могу сказать Joomla, чтобы установить base href в https://steamnet.de (или иным образом сделать сайт полностью ssl?)

Я попытался установить глобальный ssl принудительный элемент конфигурации joomla ("SSL erzwingen" на немецком языке, $force_ssl в configuration.php) до "всего", но тогда сайт разрывается с бесконечным 303 ошибка перенаправления на себя. (В качестве запоздалой мысли: я был удивлен, найдя 303 вместо 301 Вот. Если кто-то может объяснить, что я был бы благодарен)

( Laoneo предложил некоторые решения, которые не сработали, для полноты вот список)

  1. конфигурировать $live_site к https URL-адрес.
  2. зонд, если меняется $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* в файле configuration.php и измените ее на свой адрес https.

Внимание: это взлом. Пожалуйста, сначала проверьте ответ Даниэля Димитрова. Если это работает, пожалуйста, оставьте мне комментарий здесь.

Я нашел работу вокруг.

В файле 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);

Поскольку это не основной взлом, оно будет защищено от обновления. Однако, если вы используете шаблон из магазина тем и решите обновить его в будущем, возможно, вам придется добавить код обратно.


Рекомендации:

Другие вопросы по тегам