Wie ich in einigen Ressourcen gelesen habe, sind die Funktionen von base_url()
und site_url()
in codeigniter
fast gleich, obwohl meine Version von codeigniter (2.1.3) in der Datei config.php (im Verzeichnis config) kein site_url () enthält.
Gibt es Unterschiede zwischen ihnen, seit ich site_url () mit Parametern gesehen habe und Base_url () nie gesehen habe?
echo base_url(); // http://example.com/website
echo site_url(); // http://example.com/website/index.php
wenn Sie eine URL auf eine Ressource zugreifen möchten (z. B. css, js, image), verwenden Sie base_url()
. Andernfalls ist site_url()
besser.
für eine detaillierte Referenz Überprüfen Sie diese Funktion in 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;
}
Basis-URL-Funktion.
public function base_url($uri = '')
{
return $this->slash_item('base_url').ltrim($this->_uri_string($uri), '/');
}
site_url
: Gibt base_url + index_page + uri_string zurück
base_url
: Gibt base_url + uri_string zurück
Den Quellcode beider Funktionen finden Sie unter: https://github.com/EllisLab/CodeIgniter/blob/606fee0e2e0aa6a906db82e77090e91f133d7378/system/core/Config.php
Der Zweck von site_url
ist, dass Ihre Seiten portabler werden, wenn sich Ihre URL ändert. Der site_url
wird zusammen mit der index.php
-Datei angezeigt.
Segmente können optional als String oder Array an die Funktion übergeben werden.
echo site_url("news/local/123");
es wird geben: http://ci.com/index.php/news/local/123
sie können sogar Segmente als Array übergeben:
$segments = array('news', 'local', '123');
echo site_url($segments);
base_url
ist, ohne dass index_page
oder url_suffix
angehängt ist .____. Wie site_url
können Sie Segmente als String oder Array angeben.
Wenn Sie möchten, dass eine URL auf eine Ressource zugreifen kann, verwenden Sie base_url
. Sie können einer Datei eine Zeichenfolge angeben, z. B. ein Bild oder ein Stylesheet. Andernfalls reicht site_url
aus.
echo base_url("/images/icons/image.png");
Sie können auch die Datei .htaccess
im CodeIgniter-Stammordner neben der index.php
-Datei erstellen.
fügen Sie einfach diesen Code in die .htaccess
-Datei ein:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
durch diesen Code bleibt das Wort index.php
unsichtbar.
http://localhost/CodeIgniter/index.php/controllersName/
wird daran geändert
http://localhost/CodeIgniter/controllersName/
site_url () ist index.php ausführen, weshalb site_url besser ist als ein Vergleich mit base_url.
Ich möchte hinzufügen, wann base_url () und site_url () verwendet werden sollen. Grundsätzlich kann site_url () beim Erstellen von Links für Controller verwendet werden, wohingegen base_url () dort verwendet werden kann, wo URLs für die Assets erstellt werden müssen, z.
Ich bevorzuge immer Site_url () zum Erstellen von Links zu Controllern oder Ajax-URLs und Base_url () zum Laden von Assets.
base_url()
, das üblicherweise in Codeigniter
verwendet wird, kann auch ohne die Erweiterung .php
verwendet werden.
site_url()
, das üblicherweise in der benutzerdefinierten Wordpress
-Vorlage verwendet wird, kann auch verwendet werden, wenn Sie einfach den post_title
des Blogs oder den Dateinamen mit der Erweiterung aufrufen.