Мне нужно установить динамический базовый 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;