本篇文章由:http://xinpure.com/codeigniter-base-url-to-return-what-is-an-ip-address/php
雖然也是有一段時間沒有用過 Codeigniter 了,對於這個框架也算是有些瞭解了html
一般都是用這個 PHP 框架寫寫網站,而 base_url() 也是比較經常使用的函數了服務器
但是最近在寫一個網站時,查看源代碼發現,在使用了 base_url() 的連接都是 IP 地址app
看到這個,頓時有點錯愕。。。框架
CI 3.X 版本以前也是使用過的,base_url() 也都是正常的返回域名連接dom
看到這種狀況,由於在這以前也使用過 CI 3.X 版本,因此開始沒想到是版本更新的緣由ide
當時就以爲是服務器配置的有問題,而後通過一番查看,發現並非。。。函數
CI 框架幾乎都是零配置使用的,因此這個也跳過了codeigniter
最後,只能 Google 了網站
當找到這篇文章以後,我不經陷(瞬)入(間)沉(蒙)思(逼)。。。
就是這篇 CI 3.X 的更新日誌:
Make sure your ‘base_url’ config value is not empty
CI 3.0.3 以後,$config['base_url'] 不能再配置爲空了,必須設置一個須要的值
那麼問題又來了,若是是多域名或者同時須要 http 和 https 兩種協議的話,又該如何配置呢?
remember that application/config/config.php is still a PHP script
看到這句,是否有一種豁然開朗的感受呢
這就意味着,寫個判斷就能夠了。
更新日誌裏,也提供了一個 Demo:
$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; }
根據自身需求修改便可
從這個問題發現,本身思考問題方式不對
不是說之前沒問題的部分,如今同樣沒問題,至少要知道相應的版本是不同的
相似於與 CI 自己框架相關的問題,都應該先查看相應配置,若是使用的版本不一致,能夠查看更新日誌
不過通常版本更新過的地方,在 config.php 文件裏,都會特別強調配置規則
記得以前也遇到過相似的問題,就是 CI 從 2.X 更新到 3.X 的時候,Session 默認是以 files 的形式存儲的
因此得配置 Session 的文件路徑,剛開始寫了幾個相對路徑,發現都沒有效果
最後也是搜索到了文檔,而後查看到配置文件才知道只能使用絕對路徑
這個是自身須要改進的地方