web-dev-qa-db-fra.com

Comment définir l'URL de base de codeigniter appropriée?

quand j'avais mon site sur l'environnement de développement - c'était url: testurl.com

Maintenant, sur le serveur de production, l'adresse de mon application codeigniter doit être someurl.com/mysite/

Je l'ai déplacé là-bas, et chaque fois que j'essaie d'exécuter une fonction, par exemple,/home/test - cela me permet d'accéder à someurl.com/home/test - ce qui est FAUX.

Il doit être someurl.com/mysite/home/test - Comment résoudre ce problème? J'ai mis 

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

L'URL de base doit être absolue, y compris le protocole:

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

Si vous utilisez l'URL helper, alors base_url() affichera la chaîne ci-dessus.

Passer des arguments à base_url() ou site_url() donnera le résultat suivant (en supposant que $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
55
Brendan

Vérifier 

config> config

structure du fichier codeigniter

remplacer 

$config['base_url'] = "your Website url";

avec

$config['base_url']  =  "http://".$_SERVER['HTTP_Host'];

$config['base_url'] .= preg_replace('@/+$@', '', dirname($_SERVER['SCRIPT_NAME'])).'/';
19
Amranur Rahman

Eh bien c'est très intéressant, voici un code rapide et fonctionnel:

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;

ROCHES CodeIgniter !!! :)

7
Neeraj Singh

Si vous le laissez vide, le framework essaiera de détecter automatiquement il depuis la version 2.0.0.

Mais pas dans 3.0.0, voir ici: config.php

4
complex857

c'est pour le serveur nd site en direct que je postule dans hostinger.com et son fonctionne bien 

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

2): src="<?=base_url()?>assest/js/wow.min.js" (dans le fichier view)

3): href="<?php echo base_url()?>index.php/Mycontroller/Method" (pour le lien url ou l'appel de méthode)

1
Pradipsinh Rajput

Après avoir déclaré l’URL de base dans config.php, (notez que si vous obtenez toujours la même erreur, vérifiez autoload.php)

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

Vérifier "autoload"

Structure du fichier CodeIgniter:

\application\config\autoload.php

Et activez le chargement automatique:

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

Et il fonctionne.

1
Vimel Raja

application> config> config.php

recherchez $ config ['base_url'] et mettez votre site comme "//example.com" (protocole ignoré) 

 $config['base_url'] = "//someurl.com/";

Cela fonctionne pour moi.

0
Verde

Je pense que CodeIgniter 3 recommande de définir manuellement $config['base_url'] sur une URL complète afin d'éviter l'injection d'en-tête HTTP .

Si cela ne vous préoccupe pas, vous pouvez simplement ajouter les lignes suivantes dans votre

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;

De cette manière, vous avez également la constante BASE_URL constante disponible dans tout votre code de projet (y compris les vues) et vous n'avez pas à utiliser de fonctions:

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

Vous pouvez utiliser le chemin d’URL de base par défaut pour n’importe quel serveur À utiliser dans le dossier config> fichiers config.php Vous remplacez:

$config['base_url'] = 'index.php';

par ce code: $config['base_url'] = "http://".$_SERVER['HTTP_Host']; $config['base_url'] .= preg_replace('@/+$@','',dirname($_SERVER['SCRIPT_NAME'])).'/';

il a automatiquement trouvé votre dossier sous n'importe quel serveur

0
Saiful Islam