新手注意容易混淆的两个函数
在看手册时,发现有两个函数(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: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()输出的 地址是一样的了。 恩,解释的非常好、呵呵 领教了,谢谢分享 在Codeigniter 2.0以前,base_url()并不接受参数,2.0以后base_url()才接受参数,但site_url()一直都接受参数。
故此,Codeigniter的老用户不会把base_url()与site_url()混淆。反倒是可能没注意到base_url()在2.0以后能接受参数。 领教了 ,之前一直不知道怎么分辨这两个参数 base_url() 和site_url()的区别,很详细 非常感谢楼主和2楼,但是好像把$config['index_page'] = 'index.php';改成$config['index_page'] = '';首页的index.php还是需要rewrite去跳转,能不能在代码中一次修改掉,谢谢!我是CI新手 :victory::victory::victory:学习,不错!!!!感谢楼主和2L 不错
页:
[1]