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

时间:2013-06-13 05:18:45

标签: php codeigniter

正如我在某些资源中所读到的那样,base_url()中的site_url()codeigniter函数几乎相同,尽管我的codeigniter(2.1.3)版本没有site_url( )在它的config.php文件中(在config目录中)。

然而他们之间是否有任何区别,因为我看过带参数的site_url()并且从未见过base_url()没有?

7 个答案:

答案 0 :(得分:67)

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;
    }

基本网址功能。

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

答案 1 :(得分:18)

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

答案 2 :(得分:11)

1。 SITE_URL

site_url的目的是,当您的网址发生变化时,您的网页会变得更加便携。site_url会显示index.php文件。

可以选择将段作为字符串或数组传递给函数。

echo site_url("news/local/123");

它会给出:http://ci.com/index.php/news/local/123

你甚至可以将片段作为数组传递:

$segments = array('news', 'local', '123');
echo site_url($segments);

2。 BASE_URL

base_url没有附加index_pageurl_suffix。 与site_url类似,您可以将字段作为字符串或数组提供。

如果您希望对资源使用base_url进行URL访问,则可以为文件提供字符串,例如图像或样式表,site_url就足够了。

echo base_url("/images/icons/image.png");

答案 3 :(得分:1)

site_url()是执行index.php,为什么site_url与base_url相比更好。

答案 4 :(得分:1)

或者,您可以在CodeIgniter根文件夹中的.htaccess文件旁边创建文件index.php

只需将此代码添加到.htaccess文件中即可:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

此代码将使单词index.php不可见。

http://localhost/CodeIgniter/index.php/controllersName/

将更改为此

http://localhost/CodeIgniter/controllersName/

答案 5 :(得分:0)

base_url()中常用的

Codeigniter即使没有.php扩展名也可以使用。

即使您只是调用博客的site_url()或带有扩展名的文件名,也可以使用Wordpress自定义模板中常用的

post_title

答案 6 :(得分:0)

我想添加何时使用base_url()和site_url()。基本上可以在为控制器创建链接时使用site_url(),而base_url()可以在我们需要为资产创建URL的地方使用,例如加载css或js文件或某些图像。

我最喜欢的是使用site_url()创建指向控制器的链接,或使用ajax urls和base_url()来加载资源。

相关问题