Sök…


Ställer in din bas-url i Codeigniter

Du måste ange din bas-URL i application/config/config.php

Om det inte är inställt kommer CodeIgniter att försöka gissa protokollet och sökvägen till din installation, men på grund av säkerhetsproblemen kommer värdnamnet att ställas in till $_SERVER['SERVER_ADDR'] om det är tillgängligt eller localhost annars. Auto-detekteringsmekanismen finns endast för bekvämlighet under utveckling och MÅSTE INTE användas i produktionen!

$config['base_url'] = '';

Det bör arkiveras som

$config['base_url'] = 'http://localhost/projectname/';

$config['base_url'] = 'http://www.example.com/';

Alltid bra att använda / i slutet av base_url

När du inte ställer in din bas-URL kan du stöta på några fel där du inte kan ladda dina CSS, bilder och andra tillgångar. Och du kan också ha problem med att skicka formulär eftersom vissa användare har stött på.

Uppdatering

Om du inte vill ställa in din webbadress är ett annat sätt.

Skapa en ny kärnfil i application/core/MY_Config.php

Och klistra in den här koden

<?php

class MY_Config extends CI_Config {

    public function __construct() {

        $this->config =& get_config();

        log_message('debug', "Config Class Initialized");

        // Set the base_url automatically if none was provided

        if ($this->config['base_url'] == '')
        {
            if (isset($_SERVER['HTTP_HOST']))
            {
                $base_url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off' ? 'https' : 'http';
                $base_url .= '://'. $_SERVER['HTTP_HOST'];
                $base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
            }

            else
            {
                $base_url = 'http://localhost/';
            }

            $this->set_item('base_url', $base_url);

        }
    }
}

Något mer om base_url

Vad händer om jag inte ställer in base_url ?

Du får inget impotensfel för att ställa in detta och fortsätta. Du kan fortsätta utan att ställa in, men du bör veta om HTTP-headerinjektion


Om jag inte har ställt in det, vad kommer då att dyka upp?

Du kommer att få http://[::1]/ istället för din faktiska URL.


Vad betyder detta http://[::1]/ ??

Det här är en tillfällig URL som ställs in av CI som standard. Detta kommer att peka på roten till ditt dokument.

::1 - Serveradress (localhost) Läs mer om detta


Hur ställer base_url() in korrekt base_url() ??

Bas-URL bör alltid peka på roten till din projektmapp. (utanför applikationsmappen)

$config['base_url'] = 'http://localhost/path/to/project'; # If localhost
$config['base_url'] = 'http://stackoverflow.com/'; # If live
$config['base_url'] = 'http://stackoverflow.com/documentation'; # If live & inside subdomain (assume documentation is subfolder/subdomain)

Hur man använder base_url() ??

Vanligtvis är att hitta rätt sökväg till dina js- eller css-filer.

<link rel="stylesheet" href="<?php echo base_url('styles/style.css');?>" />
<script src="<?php echo base_url('vendor/jquery/jquery.min.js');?>"></script>

Lägga till koden ovan i din vy kommer att producera HTML enligt nedan:

<link rel="stylesheet" href="http://localhost/path/to/project/styles/style.css" />
<script src="http://localhost/path/to/project/vendor/jquery/jquery.min.js"></script>

länkar

  1. URL-hjälpare

Smart sätt att ställa in base_url

Följande kodrader är ett smartare sätt att ställa in base_url i kodignern:

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

Rekommenderas är

$config['base_url'] = 'https://stackoverflow.com/';

Eftersom alla känner till värdutrymmet. Så om du ställer in så här kan du förhindra injektion till din webbplats / värd .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow