¿Cuál es la diferencia entre site_url () y base_url ()?

Como he leído en algunos recursos, las base_url() y site_url() en codeigniter son casi las mismas, aunque mi versión de codeigniter (2.1.3) no tiene un site_url () en su archivo config.php (en el directorio config ).

Sin embargo, ¿hay diferencias entre ellos de alguna manera ya que he visto site_url () con parámetros y nunca he visto base_url () sin ninguno?

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

Si desea un acceso de URL a un recurso (como css, js, imagen), use base_url() , de lo contrario, site_url() es mejor.

para una referencia detallada Marque esta función en 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; } 

Función URL base.

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

site_url : devuelve base_url + index_page + uri_string

base_url : devuelve base_url + uri_string

Consulte el código fuente de ambas funciones en: https://github.com/EllisLab/CodeIgniter/blob/606fee0e2e0aa6a906db82e77090e91f133d7378/system/core/Config.php

1. site_url

El propósito de site_url es que sus páginas se vuelvan más portátiles en caso de que site_url su URL. El site_url aparece con el archivo index.php .

Los segmentos se pueden pasar opcionalmente a la función como una cadena o una matriz.

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

dará: http://ci.com/index.php/news/local/123

Incluso puedes pasar segmentos como una matriz:

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

2. base_url

base_url es sin que se index_page o url_suffix . Al igual que site_url , puede proporcionar segmentos como una cadena o una matriz.

Si desea un acceso de URL a un recurso, use base_url , puede proporcionar una cadena a un archivo, como una imagen o una hoja de estilo, de lo site_url basta con site_url .

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

site_url () es ejecutar index.php por lo que site_url es mejor en comparación con base_url.

O bien, puede crear el archivo .htaccess en la carpeta raíz de CodeIgniter al lado de su archivo index.php .

solo agrega este código en el archivo .htaccess :

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

este código hará que la palabra index.php permanezca invisible.

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

será cambiado a esto

 http://localhost/CodeIgniter/controllersName/ 

base_url() que se usa comúnmente en Codeigniter puede usarse incluso sin la extensión .php .

site_url() que se usa comúnmente en la plantilla personalizada de WordPress se puede usar incluso cuando solo se llama el post_title del blog o el nombre del archivo con la extensión.

Me gustaría agregar cuándo usar base_url () y el site_url (). Básicamente, se puede usar site_url () mientras se crean enlaces para los controladores, mientras que se puede usar base_url () donde necesitamos crear URL para los activos, como cargar un archivo css o js o alguna imagen.

Lo que siempre prefiero es usar site_url () para crear enlaces a los controladores o ajax urls y base_url () para cargar activos.