如何设置正确的codeigniter基本URL?

paw*_*wel 35 php codeigniter

当我的网站在开发环境中时 - 它是url:testurl.com

现在在生产服务器上我的codeigniter应用程序的地址必须是someurl.com/mysite/

我把它移到那里,每次我试图运行一些功能,例如/ home/test - 它让我进入someurl.com/home/test - 这是错误的.

它必须是someurl.com/mysite/home/test - 如何解决?我确实设定了

$config['base_url'] = someurl.com/mysite/
Run Code Online (Sandbox Code Playgroud)

Bre*_*dan 61

基本URL应该是绝对的,包括协议:

$config['base_url'] = "http://somesite.com/somedir/";
Run Code Online (Sandbox Code Playgroud)

如果使用URL帮助器,base_url()则会输出上面的字符串.

传递参数base_url()site_url()将导致以下结果(假设$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
Run Code Online (Sandbox Code Playgroud)

  • 可能,是的,有两件事要考虑:1)所有CI项目文件应该有`if(!defined('BASEPATH'))exit('不允许直接脚本访问');`作为第一行.这可以防止脚本自行运行,因为没有定义`BASEPATH`常量(无论是CI的前端控制器还是其他脚本).2)只要在CI的前端控制器(index.php)中指定路径,就可以安全地将`system`和`application`文件夹移到webroot之外(www,在你的情况下).基本上你的webroot只包含index.php和assets.希望有所帮助. (4认同)

小智 20

校验

config> config

codeigniter文件结构

更换

$config['base_url'] = "your Website url";
Run Code Online (Sandbox Code Playgroud)

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

$config['base_url'] .= preg_replace('@/+$@', '', dirname($_SERVER['SCRIPT_NAME'])).'/';
Run Code Online (Sandbox Code Playgroud)


Nee*_*ngh 10

嗯,这很有趣,这是快速和有效的代码:

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'])); 
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

CodeIgniter ROCKS !!! :)


com*_*857 5

如果您将其保留为空白,则该框架将尝试从版本开始自动检测2.0.0

但不在中3.0.0,请参见此处:config.php