site_url() 和 base_url() 有什么区别?

2022-08-30 11:26:16

正如我在一些资源中读到的那样,其中的功能几乎相同,尽管我的Codeigniter版本(2.1.3)在其config.php文件(在config目录中)中没有site_url()。base_url()site_url()Codeigniter

然而,自从我看到site_url()带有参数并且从未见过base_url()没有参数以来,它们之间是否存在任何差异?


答案 1
echo base_url(); // http://example.com/website
echo site_url(); // http://example.com/website/index.php

如果要对资源(如css,js,image)进行URL访问,请使用,否则,更好。base_url()site_url()

有关详细参考,请在 CodeIgniter 中检查此函数。

public function site_url($uri = '')
    {
        if (empty($uri))
        {
            return $this->slash_item('base_url').$this->item('index_page');
        }
        $uri = $this->_uri_string($uri);
        if ($this->item('enable_query_strings') === FALSE)
        {
            $suffix = isset($this->config['url_suffix']) ? $this->config['url_suffix'] : '';
            if ($suffix !== '')
            {
                if (($offset = strpos($uri, '?')) !== FALSE)
                {
                    $uri = substr($uri, 0, $offset).$suffix.substr($uri, $offset);
                }
                else
                {
                    $uri .= $suffix;
                }
            }
            return $this->slash_item('base_url').$this->slash_item('index_page').$uri;
        }
        elseif (strpos($uri, '?') === FALSE)
        {
            $uri = '?'.$uri;
        }
        return $this->slash_item('base_url').$this->item('index_page').$uri;
    }

基本 URL 函数。

public function base_url($uri = '')
        {
            return $this->slash_item('base_url').ltrim($this->_uri_string($uri), '/');
        }

答案 2

site_url: 返回 base_url + index_page + uri_string

base_url: 返回 base_url + uri_string

请参阅这两个函数的源代码,网址为:https://github.com/EllisLab/CodeIgniter/blob/606fee0e2e0aa6a906db82e77090e91f133d7378/system/core/Config.php


推荐