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

CI 3.0.3 須要注意要手動指定 config/config.php
1 2 3 |
$config['base_url'] = ''; |
如果你的 CI 同時會在正式環境與開發環境,也就是會在實際線上的網域與 localhost 中運作。可以參考官方這篇做這麼修改參數 $config[‘base_url’] 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$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 那怎麼改?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
$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; } |
不過我覺得這樣有點凌亂,這邊就不做優化了。我覺得這次的修改應該會稍有爭議,覺得應該還會被修正。