justdoit 发表于 2012-2-24 09:41:42

新手注意容易混淆的两个函数

       在看手册时,发现有两个函数(site_url()和base_url())十分的相似,开始一直没有看出来究竟有什么区别,最后看到手册中的英文后才恍然大悟,在这里分享给初学者。
      1: site_url():它是包括 config.php 中指定的 base_url 和 index_page
    $config['base_url']="http://example.com/";
   $config['index_page]="index.php";
      所以:echo site_url("news/local/123");
   将会返回: http://example.com/index.php/news/local/123这个结果
   2:base_url():手册中给出的解释是:This function returns the same thing as site_url, without the index_page or url_suffix being appended。返回在 config.php 中设定的 base_url.
所以:echo base_url();
将会返回:http://example.com/blog/post/123这个结果,少了index.php


yuzhigang5460 发表于 2012-2-24 14:02:00

本帖最后由 yuzhigang5460 于 2012-2-24 14:08 编辑

好人做到底,你只说了区别,没说使用原则。我说一下吧。
base_url()是用来获取资源的,这样不会有index.php存在,比如获取js下的某个js文件。echo base_url("js/jquery.js");
输出:http://example.com/js/jquery.js

site_url()主要是做链接,就比较好解释了。

另外使用mod_rewrite以便去掉url地址中间的index.php的话,CI会建议你配置$config['index_page]=""为空。那么此时site_url()和base_url()输出的 地址是一样的了。

justdoit 发表于 2012-2-24 14:04:09

恩,解释的非常好、呵呵

zhengfeity 发表于 2012-2-24 16:38:36

领教了,谢谢分享

燃雲 发表于 2012-2-24 16:43:58

在Codeigniter 2.0以前,base_url()并不接受参数,2.0以后base_url()才接受参数,但site_url()一直都接受参数。

故此,Codeigniter的老用户不会把base_url()与site_url()混淆。反倒是可能没注意到base_url()在2.0以后能接受参数。

璟颐佛 发表于 2012-3-1 18:14:53

领教了 ,之前一直不知道怎么分辨这两个参数

bob 发表于 2012-4-14 12:54:54

base_url() 和site_url()的区别,很详细

布罗塔 发表于 2012-4-19 16:22:09

非常感谢楼主和2楼,但是好像把$config['index_page'] = 'index.php';改成$config['index_page'] = '';首页的index.php还是需要rewrite去跳转,能不能在代码中一次修改掉,谢谢!我是CI新手

zhangcjl 发表于 2012-4-20 22:14:29

:victory::victory::victory:学习,不错!!!!感谢楼主和2L

mckee1990 发表于 2012-5-13 12:24:27

不错
页: [1]
查看完整版本: 新手注意容易混淆的两个函数