php – Codeigniter 3.0.2 升級到 3.0.3 的網址出現 http://::1

CI 3.0.3 須要注意要手動指定 config/config.php

$config['base_url'] = '';

如果你的 CI 同時會在正式環境與開發環境,也就是會在實際線上的網域與 localhost 中運作。可以參考官方這篇做這麼修改參數 $config[‘base_url’] 。

$allowed_domains = array('localhost', 'jsnwork.kiiuo.com'); //你允許的網域,其中一個指定 localhost
$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;
}

這樣在 localhost 中開發,就會優先使用 localhost。在線上查看,會使用你允許的 $allowed_domains。簡單來說,每次新專案都要手動指定,是為了解決自動判別的不安全。

但如果你的本機開發是放在子目錄底下。如我的CI放在 http://localhost/CI_jsn 那怎麼改?

$allowed_domains = array('localhost', 'cijsn.kiiuo.com'); 
$default_domain  = 'cijsn.kiiuo.com';

if (in_array($_SERVER['HTTP_HOST'], $allowed_domains, TRUE))
{
    //改成這樣。當發生在 localhost 的時候,添加結尾路徑
    if ($_SERVER['HTTP_HOST'] == "localhost") 
    {
        $domain = $_SERVER['HTTP_HOST'] . "/CI_jsn";
    }
    else 
    {
        $domain = $_SERVER['HTTP_HOST'];
    }
}
else
{
    $domain = $default_domain;
}

if ( ! empty($_SERVER['HTTPS']))
{
    $config['base_url'] = 'https://'.$domain;
}
else
{
    $config['base_url'] = 'http://'.$domain;
}

不過我覺得這樣有點凌亂,這邊就不做優化了。我覺得這次的修改應該會稍有爭議,覺得應該還會被修正。

 

發表迴響