在CodeIgniter中设置动态基本URL

Jan*_*ana 9 php codeigniter

由于以下原因,我需要在codeigniter中设置动态基本URL.

  • localhost用于开发和重置,当它上线
  • 单个应用程序可从多个域访问
  • ip地址可能因dhcp(本地)而改变

Jan*_*ana 18

我只需要分享我的知识,因为我已经找到了答案,如下所述.

只需使用以下内容覆盖config/config.php中的行:

$config['base_url']    = 'http://'.$_SERVER['HTTP_HOST'].'/';
Run Code Online (Sandbox Code Playgroud)

如果您使用的是子文件夹,则可以使用以下代码:

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


Mud*_*ark 18

CodeIgniter会base_url自行解决,所以你可以这样做:

$config['base_url'] = '';
Run Code Online (Sandbox Code Playgroud)

  • 嘿,我把它设置为*'';*但它根本找不到我的*assets*文件夹.当我点击INSPECT它显示一些不同的IP时,我不明白,因为我的服务器的IP完全不同.我使用codeigniter 3.我无法ping显示的IP. (3认同)
  • 这不是一个好答案。base_url()将返回服务器host_name而不是您正在使用的实际域。我对此表示反对。 (2认同)

Eri*_*cía 6

就像在文档中说的那样:

万一您需要允许多个域,或者根据请求动态使用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;
}
Run Code Online (Sandbox Code Playgroud)


Rak*_*ati 6

你也可以尝试这个。

$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;
Run Code Online (Sandbox Code Playgroud)