Как-то мнe захотелось чтобы при обращению к странице по https, также все внутренние линки были изменены на варианты с https. Так как view страницы загружается с разными url, относительные пути не проходили (js/script.js) и я решил использовать функцию base_url (echo base_url().'js/script.js'), но дело в том что она подставляет содержимое переменной $config['base_url'], которая в свою очередь статична.
Немного поискав я нашел решение — динамический базовый путь в $config['base_url']. Также положительным эффектом является то, что теперь не нужно изменять base_url при переносе файлов между доменами.
Удобнее всего добавит эти изменения сразу в файл system/config/config.php
Есть и более сложный вариант:
Код взят с форума Codeigniter: Automatic configbase url
Немного поискав я нашел решение — динамический базовый путь в $config['base_url']. Также положительным эффектом является то, что теперь не нужно изменять base_url при переносе файлов между доменами.
Удобнее всего добавит эти изменения сразу в файл system/config/config.php
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
Есть и более сложный вариант:
/* Detect ssl connectivity */
if ( isset($_SERVER['HTTPS']) ) {
$ssl = $_SERVER['HTTPS'];
}elseif ( isset($_SERVER['HTTP_FRONT_END_HTTPS']) ) {
$ssl = $_SERVER['HTTP_FRONT_END_HTTPS'];
}else {
$ssl = "OFF";
}
$root = (stripos($ssl, "ON") !== FALSE) ? "https" : "http";
/* Many pages/apps served through the same domain */
if ( isset($_SERVER['HTTP_X_FORWARDED_HOST']) ) {
list($host) = explode(',', str_replace(' ', '', $_SERVER['HTTP_X_FORWARDED_HOST']));
} else {
$host = $_SERVER['HTTP_HOST'];
}
$root .= "://".$host;
if ( ! isset($_SERVER['ORIG_SCRIPT_NAME']) ) {
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
}
else {
$root .= str_replace(basename($_SERVER['ORIG_SCRIPT_NAME']),"",$_SERVER['ORIG_SCRIPT_NAME']);
}
$config['base_url'] = "$root";
Код взят с форума Codeigniter: Automatic configbase url