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

本篇文章由: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 的更新日志:

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 的文件路径,刚开始写了几个相对路径,发现都没有效果

最后也是搜索到了文档,而后查看到配置文件才知道只能使用绝对路径

这个是自身须要改进的地方

相关文章
相关标签/搜索