Szukaj…


Ustawianie podstawowego adresu URL w Codeigniter

Musisz ustawić swój podstawowy adres URL w application/config/config.php

Jeśli nie jest ustawiony, CodeIgniter spróbuje odgadnąć protokół i ścieżkę do instalacji, ale ze względów bezpieczeństwa $_SERVER['SERVER_ADDR'] hosta zostanie ustawiona na $_SERVER['SERVER_ADDR'] jeśli jest dostępny, lub localhost w przeciwnym razie. Mechanizm automatycznego wykrywania istnieje tylko dla wygody podczas projektowania i NIE WOLNO go używać w produkcji!

$config['base_url'] = '';

Powinien być złożony jak

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

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

Zawsze dobry w użyciu / na końcu base_url

Jeśli nie ustawisz podstawowego adresu URL, możesz napotkać błędy, w wyniku których nie możesz załadować CSS, obrazów i innych elementów zasobów. A także mogą wystąpić problemy z przesyłaniem formularzy, na które natrafili niektórzy użytkownicy.

Aktualizacja

Jeśli nie chcesz ustawiać podstawowego adresu URL, możesz to zrobić inaczej.

Utwórz nowy plik podstawowy w application/core/MY_Config.php

I wklej ten kod

<?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);

        }
    }
}

Coś więcej na temat base_url

Co się stanie, jeśli nie base_url ?

Nie pojawi się żaden błąd impotencji, aby to ustawić i kontynuować. Możesz kontynuować bez ustawiania, ale powinieneś wiedzieć o wstrzykiwaniu nagłówka HTTP


Gdybym tego nie ustawił, co się pojawi?

Otrzymasz http://[::1]/ zamiast rzeczywistego adresu URL.


Co to znaczy http://[::1]/ ??

Jest to tymczasowy adres URL ustawiony domyślnie przez CI. To wskaże katalog główny twojego dokumentu.

::1 - Adres serwera (localhost) Czytaj więcej na ten temat


Jak ustawić właściwą base_url() ??

Podstawowy adres URL powinien zawsze wskazywać na katalog główny folderu projektu. (poza folderem aplikacji)

$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)

Jak korzystać z base_url() ??

Najczęstszym zastosowaniem jest znalezienie właściwej ścieżki do plików js lub css.

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

Dodanie powyższego kodu w widoku spowoduje wygenerowanie kodu HTML, jak poniżej:

<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>

Spinki do mankietów

  1. Pomocnik adresu URL

Inteligentny sposób na skonfigurowanie base_url

Następujące wiersze kodu są bardziej sprytnym sposobem skonfigurowania base_url w codeigniter:

$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']);

Zalecane jest

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

Ponieważ wszyscy znają przestrzeń hostingową. Więc jeśli ustawisz w ten sposób, możesz zapobiec wstrzyknięciu do twojej witryny / hosta .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow