Codeigniter base_url() 返回的怎么是ip地址


本篇文章由:http://xinpure.com/codeigniter-base-url-to-return-what-is-an-ip-address/

簡單說說情況

雖然也是有一段時間沒有用過 Codeigniter 了,對於這個框架也算是有些了解了

通常都是用這個 PHP 框架寫寫網站,而 base_url() 也是比較常用的函數了

可是最近在寫一個網站時,查看源代碼發現,在使用了 base_url() 的鏈接都是 IP 地址

看到這個,頓時有點錯愕。。。

CI 3.X 版本之前也是使用過的,base_url() 也都是正常的返回域名鏈接

分析問題

看到這種情況,因為在這之前也使用過 CI 3.X 版本,所以開始沒想到是版本更新的原因

當時就覺得是服務器配置的有問題,然后經過一番查看,發現並不是。。。

CI 框架幾乎都是零配置使用的,所以這個也跳過了

最后,只能 Google 了

當找到這篇文章之后,我不經陷(瞬)入(間)沉(蒙)思(逼)。。。

就是這篇 CI 3.X 的更新日志:

Upgrading from 3.0.2 to 3.0.3

問題所在

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 的文件路徑,剛開始寫了幾個相對路徑,發現都沒有效果

最后也是搜索到了文檔,然后查看到配置文件才知道只能使用絕對路徑

這個是自身需要改進的地方


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM