В чем разница между site_url() и base_url()?

Как я читал в некоторых ресурсах, функции base_url() и site_url() в codeigniter почти одинаковы, хотя моя версия codeigniter (2.1.3) не имеет site_url() в ней config.php файл (в каталоге конфигурации).

Но существуют ли различия между ними каким-либо образом, так как я видел site_url() с параметрами и никогда не видел base_url(), не имеющих?

Ответ 1

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

если вы хотите, чтобы URL-адрес доступа к ресурсу (например, css, js, image), использовал 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), '/');
        }

Ответ 3

1. site_url

Цель site_url заключается в том, что ваши страницы становятся более переносимыми в случае изменения вашего 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_page или url_suffix. например site_url, вы можете снабжать сегменты в виде строки или массива.

Если вы хотите, чтобы URL-адрес доступа к ресурсу использовался base_url, вы можете указать строку в файле, например, изображение или таблицу стилей еще site_url.

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

Ответ 4

site_url() выполняет index.php, поэтому site_url лучше по сравнению с base_url.

Ответ 5

base_url(), который обычно используется в Codeigniter, может использоваться даже без расширения .php.

site_url(), который обычно используется в Wordpress настраиваемом шаблоне, может использоваться, даже если вы просто вызываете post_title в блоге или имя файла с расширением.

Ответ 6

Я хотел бы добавить, когда использовать base_url() и site_url(). В основном можно использовать site_url() при создании ссылок для контроллеров, тогда как base_url() можно использовать там, где нам нужно создавать URL-адреса для таких ресурсов, как загрузка файла css или js или какого-либо изображения.

Я всегда предпочитаю использовать site_url() для создания ссылок на контроллеры или ajax urls и base_url() для загрузки активов.