Wie stelle ich die richtige Codeigniter-Basis-URL ein?

Lesezeit: 4 Minuten

Als ich meine Seite in der Entwicklungsumgebung hatte, war es die URL: testurl.com

Jetzt muss auf dem Produktionsserver die Adresse meiner Codeigniter-App sein someurl.com/mysite/

Ich habe es dorthin verschoben, und jedes Mal, wenn ich versuche, eine Funktion auszuführen, example /home/test – Es bringt mich hinein someurl.com/home/test – was falsch ist.

Es muss sein someurl.com/mysite/home/test – Wie man es repariert? Ich habe eingestellt

$config['base_url'] = someurl.com/mysite/

Die Basis-URL sollte absolut sein, einschließlich des Protokolls:

$config['base_url'] = "http://somesite.com/somedir/";

Wenn Sie den URL-Helfer verwenden, dann base_url() wird die obige Zeichenfolge ausgeben.

Übergabe von Argumenten an base_url() oder site_url() ergibt sich folgendes (vorausgesetzt $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

  • +1 für Ihre Antwort zur absoluten Referenzierung … Aber wenn ich mir das anschaue, habe ich Zweifel … Ist es nicht eine schlechte Idee, die CodeIgniter-Dateien UND die ‘somesite’-Dateien am selben Ort zu haben (das ist www)? ? Ich meine, würde dies die CodeIgniter-Dateien nicht für externe Bots zugänglich machen? Nur neugierig…

    – Itsole

    16. Januar 2013 um 10:05 Uhr

  • Potenziell ja, und es gibt zwei Dinge zu beachten: 1) Alle CI-Projektdateien sollten vorhanden sein if (!defined('BASEPATH')) exit('No direct script access allowed'); als erste Zeile. Dadurch wird verhindert, dass das Skript von selbst ausgeführt wird, da die BASEPATH Die Konstante ist nicht anderweitig definiert (sei es der Front-Controller von CI oder ein anderes Skript). 2) Sie können die sicher bewegen system UND application Ordner außerhalb Ihres Webroots (in Ihrem Fall www), solange Sie deren Pfade im Front-Controller von CI (index.php) angeben. Grundsätzlich enthält Ihr Webroot nur index.php und Assets. Ich hoffe, das hilft.

    – Brenda

    16. Januar 2013 um 17:20 Uhr


  • Was ist das Szenario zum Überschreiben dieser baseUrl

    – Jasar Arafath

    21. Juni 2017 um 12:54 Uhr

Wie stelle ich die richtige Codeigniter Basis URL ein
Amranur Rahman

Überprüfen

Konfig > Konfig

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']))."https://stackoverflow.com/";

  • https Erkennung fehlt

    – Marco Demaio

    5. Dezember 2018 um 0:23 Uhr

  • Warum sollte sich jemand die Mühe machen, preg_replace('@/[email protected]',...) um die führenden Schrägstriche aus einer Zeichenfolge zu entfernen, wenn ltrim($string, '/') ist eine viel einfachere/leichtere Option?

    – mickmackusa

    26. November 2020 um 21:57 Uhr

Nun, das ist sehr interessant, hier ist 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 ROCKT!!! 🙂

Wie stelle ich die richtige Codeigniter Basis URL ein
Komplex857

Wenn Sie es leer lassen, versucht das Framework dies automatische Erkennung es seit Version 2.0.0.

Aber nicht drin 3.0.0siehe hier: config.php

1646263447 932 Wie stelle ich die richtige Codeigniter Basis URL ein
Marco Demaio

Ich denke CodeIgniter 3 empfiehlt sich einzustellen $config['base_url'] zu einer vollständigen URL manuell um zu vermeiden HTTP-Header-Injection.

Wenn Sie sich darüber keine Gedanken machen, können Sie einfach die folgenden Zeilen in Ihre hinzufügen

application/config/config.php

defined('BASE_URL') OR define('BASE_URL', (is_https() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']) . "https://stackoverflow.com/");
$config['base_url'] = BASE_URL;

Auf diese Weise haben Sie auch BASE_URL konstant in Ihrem gesamten Projektcode (einschließlich der Ansichten) verfügbar und Sie müssen keine Funktionen verwenden:

config_item('base_url') //returns BASE_URL
$this->config->item('base_url'); //returns BASE_URL

  • Verwenden Sie SERVER_NAME anstelle von HTTP_HOST, dies ist sicherer

    – kodmanyagha

    26. Dezember 2018 um 15:03 Uhr

  • @kodmanyagha AFAIK ist nicht wahr. In vielen Fällen wird SERVER_NAME nur von HTTP_HOST ausgefüllt. Für maximale Sicherheit besteht die einzige Möglichkeit darin, anhand zulässiger Hostnamen zu prüfen, siehe stackoverflow.com/a/1459794/260080

    – Marco Demaio

    26. Dezember 2018 um 18:49 Uhr


1646263447 137 Wie stelle ich die richtige Codeigniter Basis URL ein
Parik

Dies ist für Server und Live-Sites, die ich in hostinger.com anwende und es funktioniert gut

1 : $config['base_url'] = 'http://yoursitename.com'; (in confing.php)

2) : src="https://stackoverflow.com/questions/11792268/<?=base_url()?>assest/js/wow.min.js" (in Ansichtsdatei)

3) : href="https://stackoverflow.com/questions/11792268/<?php%20echo%20base_url()?>index.php/Mycontroller/Method" (für URL-Link oder Methodenaufruf)

  • Verwenden Sie SERVER_NAME anstelle von HTTP_HOST, dies ist sicherer

    – kodmanyagha

    26. Dezember 2018 um 15:03 Uhr

  • @kodmanyagha AFAIK ist nicht wahr. In vielen Fällen wird SERVER_NAME nur von HTTP_HOST ausgefüllt. Für maximale Sicherheit besteht die einzige Möglichkeit darin, anhand zulässiger Hostnamen zu prüfen, siehe stackoverflow.com/a/1459794/260080

    – Marco Demaio

    26. Dezember 2018 um 18:49 Uhr


Wie stelle ich die richtige Codeigniter Basis URL ein
Rennenimagination

Nachdem Sie die Basis-URL in config.php deklariert haben, (beachten Sie, wenn Sie immer noch denselben Fehler erhalten, überprüfen Sie autoload.php)

$config['base_url'] = "http://somesite.com/somedir/";

Aktivieren Sie “automatisches Laden”

CodeIgniter-Dateistruktur:

\application\config\autoload.php

Und beim Autoload aktivieren:

$autoload['helper'] = array(**'url',** 'file');

Und es funktioniert.

917210cookie-checkWie stelle ich die richtige Codeigniter-Basis-URL ein?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy