39

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

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

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

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

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

17 回答 17

67

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

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

如果使用 URL 助手,base_url()则将输出上述字符串。

将参数传递给base_url()orsite_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
于 2012-08-03T18:19:58.137 回答
22

查看

配置 > 配置

代码点火器文件结构

代替

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

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

$config['base_url'] .= preg_replace('@/+$@', '', dirname($_SERVER['SCRIPT_NAME'])).'/';
于 2015-11-04T06:47:39.337 回答
11

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

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 摇滚!!!:)

于 2016-06-15T10:41:39.627 回答
5

如果您将其留空,框架将尝试从 version开始自动检测2.0.0它。

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

于 2012-08-03T08:46:51.063 回答
3

我认为 CodeIgniter 3 建议$config['base_url']手动设置为完整的 url 以避免HTTP 标头注入

如果你不关心它,你可以简单地在你的

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;

通过这种方式,您BASE_URL在所有项目代码(包括视图)中也可以使用常量,并且您不必使用函数:

config_item('base_url') //returns BASE_URL
$this->config->item('base_url'); //returns BASE_URL
于 2018-12-05T00:17:36.143 回答
2

这是我在hostinger.com申请的服务器和实时站点,它工作正常

第一个:($config['base_url'] = 'http://yoursitename.com'; 在confing.php中)

2):(src="<?=base_url()?>assest/js/wow.min.js" 在视图文件中)

3):( href="<?php echo base_url()?>index.php/Mycontroller/Method" 用于url链接或方法调用)

于 2017-09-15T09:19:37.123 回答
1

在 config.php 中声明基本 url 后,(注意,如果您仍然收到相同的错误,请检查 autoload.php)

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

检查“自动加载”

CodeIgniter 文件结构:

\application\config\autoload.php

并启用自动加载:

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

它有效。

于 2013-12-24T19:55:13.930 回答
0

您可以为必须在配置文件夹中使用的任何服务器使用默认基本 URL 路径 > config.php 文件替换您:

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

通过此代码: $config['base_url'] = "http://".$_SERVER['HTTP_HOST']; $config['base_url'] .= preg_replace('@/+$@','',dirname($_SERVER['SCRIPT_NAME'])).'/';

它会从任何服务器自动找到您的文件夹

于 2016-01-25T10:27:02.030 回答
0

应用程序 > 配置 > config.php

搜索 $config['base_url'] 并将您的网站设置为“//example.com”(跳过协议)

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

这对我有用。

于 2017-07-10T09:06:01.867 回答
0

在您的配置文件中,保留$config['base_url'] = ''

base_url会自动创建一个。在您的 Codeigniter 中system/core/Config.php

        // Set the base_url automatically if none was provided
        if (empty($this->config['base_url']))
        {
            if (isset($_SERVER['SERVER_ADDR']))
            {
                if (strpos($_SERVER['SERVER_ADDR'], ':') !== FALSE)
                {
                    $server_addr = '['.$_SERVER['SERVER_ADDR'].']';
                }
                else
                {
                    $server_addr = $_SERVER['SERVER_ADDR'];
                }

                $base_url = (is_https() ? 'https' : 'http').'://'.$server_addr
                    .substr($_SERVER['SCRIPT_NAME'], 0, strpos($_SERVER['SCRIPT_NAME'], basename($_SERVER['SCRIPT_FILENAME'])));
            }
            else
            {
                $base_url = 'http://localhost/';
            }

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

此代码已用于自动创建基本 URL 和协议。

谢谢。

于 2021-06-08T11:37:35.393 回答
-1

你错过了双引号吗?

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

于 2012-08-03T09:00:27.150 回答
-1

动态基本网址(codeigniter)

只需使用以下内容覆盖 config/config.php 中的行:

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

于 2016-07-02T09:12:35.713 回答
-1
$config['base_url'] = "http://".$_SERVER['SERVER_NAME']."/project_name/";

这样你就可以配置你 base_url ,然后就不用担心托管了。两者都适用于本地主机和服务器。

于 2017-03-01T05:51:08.240 回答
-1
Base url set in CodeIgniter for all url

$config['base_url'] = "http://".$_SERVER['HTTP_HOST']."/";
于 2017-06-07T13:57:33.543 回答
-1

像这样更改config.php。

$base_url = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$base_url .= "://". @$_SERVER['HTTP_HOST'];
$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
$config['base_url'] = $base_url;
于 2018-01-06T08:45:59.690 回答
-1

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

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

此配置适用于 localhost 和服务器。

不要忘记启用自动加载:

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

然后 base_url() 将输出如下

echo base_url('assets/style.css'); //http://yoursite.com/mysite/assets/style.css
于 2018-07-19T07:33:22.503 回答
-2

尝试将控制器添加到您的索引页面。只是在我自己的一个站点上查看了类似的结构,我将基本 url 设置为 = "somedomain.com/v2/controller"

于 2012-08-03T08:49:54.680 回答