Установить динамический базовый url в CodeIgniter

Мне нужно установить динамический базовый url в codeigniter из-за нескольких следующих причин.

  • localhost для разработки и сброса, когда он идет в прямом эфире
  • одно приложение доступно из нескольких доменов
  • IP-адрес может измениться из-за dhcp (локально)

Solutions Collecting From Web of "Установить динамический базовый url в CodeIgniter"

CodeIgniter base_url , поэтому вы можете просто сделать:

 $config['base_url'] = ''; 

Мне просто нужно поделиться своими знаниями, так как я уже нашел ответ, как указано ниже.

Просто перепишите строку в config / config.php следующим образом:

 $config['base_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/'; 

Если вы используете подпапку, вы можете использовать следующий код:

 $root = "http://".$_SERVER['HTTP_HOST']; $root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']); $config['base_url'] = "$root"; 

Как и в документах:

Если вам нужно разрешить, например, несколько доменов или оба http: // и https: // префиксы для динамического использования в зависимости от запроса, помните, что application / config / config.php все еще является скриптом PHP, в котором вы можете создайте эту логику несколькими строками кода. Например:

 $allowed_domains = array('domain1.tld', 'domain2.tld'); $default_domain = 'domain1.tld'; if (in_array($_SERVER['HTTP_HOST'], $allowed_domains, TRUE)) { $domain = $_SERVER['HTTP_HOST']; } else { $domain = $default_domain; } if (! empty($_SERVER['HTTPS'])) { $config['base_url'] = 'https://'.$domain; } else { $config['base_url'] = 'http://'.$domain; } 

Также вы можете попробовать это.

 $base_url = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http"); $base_url .= "://". @$_SERVER['HTTP_HOST']; $base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']); $config['base_url'] = $base_url; 

Я согласен с ответом Дженит, но у меня есть лучшее и легкое решение.

Задайте элемент конфигурации в любых файлах конфигурации (например, я использую его в routes.php), он будет сбросить base_url перед использованием в контроллере.

 $lang_code = 'en'; $root_domain = 'test.org'; $base_domain_url = 'http://' . $lang_code . '.' . $root_domain; $this->config->set_item('base_url', $base_domain_url); 

Проверьте его в контроллере:

 echo base_url(); 

Результат:

 http://en.test.org 

Также вы можете использовать …

 $root = "http://".$_SERVER['HTTP_HOST']; $root .= dirname($_SERVER['SCRIPT_NAME']); $config['base_url'] = $root;