В чем разница между 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), '/');
}
Ответ 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
Ответ 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() для загрузки активов.