Seri,
во-1х, вы как-то странно используете функцию getCanonicalUrl() из моего модуля Core_Utils.
По идее, ее единственное предназначение - это получение значение для meta-тега canonical, который сам по себе не приводит ни к какому редиректу, а просто сообщает поисковикам, какой урл считать основным для данной страницы.
Покажите, как вы вызываете эту функцию?
Во-2х, сам вопрос "напишите порядок переключение HostCMS с http на https" - ответ на него очень прост, нужно всем узлам структуры выключить галочку доступ по https, и система сама будет перенаправлять пользователей с http на https, потому что в файле /modules/core/command/controller/default.php есть код
// Если доступ к узлу структуры только по HTTPS, а используется HTTP, то делаем редирект
if ($oStructure->https == 1 && !Core::httpsUses())
{
$url = str_replace(array("\r", "\n"), '', Core::$url['host'] . $this->_uri);
$oCore_Response
->status(302)
->header('Location', 'https://' . $url);
return $oCore_Response;
}
И тут как раз подозрения на то, что у вас на сервере как-то не правильно настроен https, и функция Core::httpsUses() никогда не принимает значение true, даже если доступ на самом деле запрашивается через https
Вот код этой функции:
static public function httpsUses()
{
return Core_Array::get($_SERVER, 'SERVER_PORT') == 443 || Core_Array::get($_SERVER, 'HTTP_PORT') == 443
|| strtolower(Core_Array::get($_SERVER, 'HTTPS')) == 'on' || Core_Array::get($_SERVER, 'HTTPS') == '1'
|| strtolower(Core_Array::get($_SERVER, 'HTTP_X_FORWARDED_PROTO')) == 'https';
}
Проверьте, выполняются ли эти условия, например, запросив phpinfo() по https.