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 предложил некоторые решения, которые не сработали, для полноты здесь есть список)
- настройте
$live_site
на URL https
.
- при изменении
$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
Ответы
Ответ 1
Извините, но я не думаю, что текущий ответ действительно правильный. Этот ответ способствует взлому и обходит проблему. В следующий раз, когда вы обновите 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.
Ответ 2
Проверьте переменную * $live_site * в файле configuration.php и измените ее на свой адрес https.
Ответ 3
Внимание. Это взлом. Пожалуйста, сначала проверьте Даниэль Димитров. Если это сработает, пожалуйста, оставьте здесь комментарий.
Я нашел работу вокруг.
В файле 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, поэтому это не проблема для меня.
Ответ 4
Удаление тега <base>
в целом должно решить ваши проблемы. Вы можете сделать это в файле index.php
вашего шаблона следующим образом:
$doc = JFactory::getDocument();
unset($doc->base);
Поскольку это не основной взлом, он будет обновлен. Однако, если вы используете шаблон из магазина тем и хотите обновить шаблон в будущем, вам, возможно, придется добавить код обратно.
Литература: