Динамический base_url в CodeIgniter

Хочу чтоб при обращению к странице по 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

$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";

ps: Проблема с http и https решается гораздо проще установкой $config['base_url'] = ‘//example.com/’.

Документы для покупки квартиры. Быстро скачать справка о доходах в свободной форме образец.
  • CodeIgniter получить id последней записи аналог mysql_insert_id()
  • php codeigniter отправка писем кириллицей
  • Crop и Resize изображений средствами CodeIgniter
  • Установка и настройка PHP framework CodeIgniter.
  • CodeIgniter ImageConvert конвертация изображений
  • Scaffolding CodeIgniter
  • 1 комментарий на “Динамический base_url в CodeIgniter”

    1. xprommer:

      Неплохим решением также, будет создать library или подредактировать helper url, добавить туда свою функцию для получения урла, или схемы (протокола)

    Оставить комментарий