als ich meine Website in der Entwicklungsumgebung hatte, gab es folgende URL: testurl.com
Auf dem Produktionsserver muss jetzt die Adresse meiner Codeigniter-App lauten: someurl.com/mysite/
Ich zog es dorthin und jedes Mal versuche ich, eine Funktion auszuführen, beispielsweise/home/test - es bringt mich zu someurl.com/home/test - was falsch ist.
Es muss sein someurl.com/mysite/home/test - Wie kann ich das beheben? Ich habe eingestellt
$config['base_url'] = someurl.com/mysite/
Die Basis-URL sollte einschließlich des Protokolls absolut sein:
$config['base_url'] = "http://somesite.com/somedir/";
Wenn Sie den URL-Helfer verwenden, gibt base_url()
die obige Zeichenfolge aus.
Die Übergabe von Argumenten an base_url()
oder site_url()
führt zu folgendem (angenommenem $config['index_page'] = "index.php";
):
echo base_url('assets/stylesheet.css'); // http://somesite.com/somedir/assets/stylesheet.css
echo site_url('mycontroller/mymethod'); // http://somesite.com/somedir/index.php/mycontroller/mymethod
Prüfen
config> config
codeigniter-Dateistruktur
ersetzen
$config['base_url'] = "your Website url";
mit
$config['base_url'] = "http://".$_SERVER['HTTP_Host'];
$config['base_url'] .= preg_replace('@/[email protected]', '', dirname($_SERVER['SCRIPT_NAME'])).'/';
Das ist sehr interessant. Hier ist ein schneller und funktionierender Code:
index.php
/**
* Define APP_URL Dynamically
* Write this at the bottom of index.php
*
* Automatic base url
*/
define('APP_URL', ($_SERVER['SERVER_PORT'] == 443 ? 'https' : 'http') . "://{$_SERVER['SERVER_NAME']}".str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']));
config.php
/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
| http://example.com/
|
| If this is not set then CodeIgniter will guess the protocol, domain and
| path to your installation.
|
*/
$config['base_url'] = APP_URL;
CodeIgniter FELSEN !!! :)
Wenn Sie das Feld leer lassen, versucht das Framework autodetect seit Version 2.0.0
.
Aber nicht in 3.0.0
, siehe hier: config.php
dies ist für Server und Live-Site, die ich in hostinger.com beantrage und es funktioniert einwandfrei
1.: $config['base_url'] = 'http://yoursitename.com';
(in confing.php)
2): src="<?=base_url()?>assest/js/wow.min.js"
(in der Ansichtsdatei)
3): href="<?php echo base_url()?>index.php/Mycontroller/Method"
(für URL-Link oder Methodenaufruf)
Nachdem Sie die Basis-URL in der config.php deklariert haben (beachten Sie, wenn Sie immer noch den gleichen Fehler erhalten, überprüfen Sie autoload.php.)
$config['base_url'] = "http://somesite.com/somedir/";
"Autoload" prüfen
CodeIgniter-Dateistruktur:
\application\config\autoload.php
Und bei Autoload aktivieren:
$autoload['helper'] = array(**'url',** 'file');
Und es funktioniert.
anwendung> config> config.php
suchen Sie nach $ config ['base_url'] und setzen Sie Ihre Site wie "//example.com" (Protokoll überspringen).
$config['base_url'] = "//someurl.com/";
Das funktioniert für mich.
Ich denke, CodeIgniter 3 empfiehlt, $config['base_url']
manuell auf eine vollständige URL zu setzen, um HTTP-Header-Injection zu vermeiden.
Wenn Sie sich nicht darum kümmern, können Sie einfach die folgenden Zeilen in Ihr einfügen
application/config/config.php
defined('BASE_URL') OR define('BASE_URL', (is_https() ? 'https://' : 'http://') . $_SERVER['HTTP_Host'] . dirname($_SERVER['SCRIPT_NAME']) . '/');
$config['base_url'] = BASE_URL;
Auf diese Weise stehen Ihnen BASE_URL
konstant in Ihrem gesamten Projektcode (einschließlich der Ansichten) zur Verfügung, und Sie müssen keine Funktionen verwenden:
config_item('base_url') //returns BASE_URL
$this->config->item('base_url'); //returns BASE_URL
Sie können den standardmäßigen Basis-URL-Pfad für jeden Server verwenden. __, der in config-Ordner> config.php-Dateien verwendet werden soll Ersetzen Sie:
$config['base_url'] = 'index.php';
durch diesen Code: $config['base_url'] = "http://".$_SERVER['HTTP_Host'];
$config['base_url'] .= preg_replace('@/[email protected]','',dirname($_SERVER['SCRIPT_NAME'])).'/';
ihr Ordner wird automatisch von jedem Server gefunden