Comme j'ai lu dans certaines ressources, les fonctions base_url()
et site_url()
dans codeigniter
sont presque identiques, bien que ma version de codeigniter (2.1.3) ne contienne pas site_url () dans son fichier config.php (dans le répertoire config).
Pourtant, y a-t-il des différences entre eux de quelque manière que ce soit depuis que j'ai vu site_url () avec des paramètres et que je n'ai jamais vu base_url () n'en contenir aucun?
echo base_url(); // http://example.com/website
echo site_url(); // http://example.com/website/index.php
si vous voulez un accès URL à une ressource (telle que css, js, image), utilisez base_url()
, sinon, site_url()
est préférable.
pour une référence détaillée Cochez cette fonction dans 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;
}
Fonction URL de base.
public function base_url($uri = '')
{
return $this->slash_item('base_url').ltrim($this->_uri_string($uri), '/');
}
site_url
: retourne base_url + index_page + uri_string
base_url
: retourne base_url + uri_string
Voir le code source des deux fonctions sur: https://github.com/EllisLab/CodeIgniter/blob/606fee0e2e0aa6a906db82e77090e91f133d7378/system/core/Config.php
Le but de site_url
est que vos pages deviennent plus portables au cas où votre URL changerait. Le site_url
apparaît avec le fichier index.php
.
Les segments peuvent éventuellement être transmis à la fonction sous forme de chaîne ou de tableau.
echo site_url("news/local/123");
cela donnera: http://ci.com/index.php/news/local/123
vous pouvez même passer des segments sous forme de tableau:
$segments = array('news', 'local', '123');
echo site_url($segments);
base_url
est sans que index_page
ou url_suffix
ne soit ajouté . comme site_url
, vous pouvez fournir des segments sous forme de chaîne ou de tableau.
Si vous souhaitez que l'URL accède à une ressource, utilisez base_url
, vous pouvez fournir une chaîne de caractères à un fichier, telle qu'une image ou une feuille de style. site_url
suffit.
echo base_url("/images/icons/image.png");
Vous pouvez également créer le fichier .htaccess
dans le dossier racine CodeIgniter en regard de son fichier index.php
.
ajoutez simplement ce code sur le fichier .htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
ce code fera que Word index.php
reste invisible.
http://localhost/CodeIgniter/index.php/controllersName/
sera changé pour cela
http://localhost/CodeIgniter/controllersName/
site_url () est execute index.php c'est pourquoi site_url est préférable à base_url.
Je voudrais ajouter quand utiliser base_url () et le site_url (). Fondamentalement, on peut utiliser site_url () lors de la création de liens pour les contrôleurs, tandis que base_url () peut être utilisé lorsque nous devons créer des URL pour les actifs, comme le chargement d’un fichier css ou js ou d’une image.
Ce que je préfère toujours, c’est d’utiliser site_url () pour créer des liens vers des contrôleurs ou des URL ajax et base_url () pour charger des actifs.
base_url()
qui est couramment utilisé dans Codeigniter
peut être utilisé même sans l'extension .php
.
site_url()
qui est couramment utilisé dans le modèle personnalisé Wordpress
peut être utilisé même lorsque vous appelez simplement le post_title
du blog ou le nom du fichier avec l'extension.