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

时间:2012-08-03 08:42:52

标签: php codeigniter

当我的网站处于开发环境时 - 它是网址: testurl.com

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

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

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

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

17 个答案:

答案 0 :(得分:57)

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

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

如果使用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

答案 1 :(得分:19)

检查

  

config>配置

codeigniter文件结构

替换

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

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

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

答案 2 :(得分:9)

这非常有趣,以下是快速且有效的代码:

<强> 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 ROCKS !!! :)

答案 3 :(得分:5)

如果您将其留空,框架将从版本2.0.0开始尝试autodetect

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

答案 4 :(得分:1)

我认为CodeIgniter 3建议手动将$config['base_url']设置为完整网址,以避免使用HTTP header injection

如果您不关心它,只需在您的

中添加以下几行

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

答案 5 :(得分:1)

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

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

选中“自动加载”

CodeIgniter文件结构:

\application\config\autoload.php

启用自动加载:

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

它有效。

答案 6 :(得分:1)

这是针对服务器和现场网站,我在hostinger.com申请并且工作正常

1st:$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" (用于网址链接或方法调用)

答案 7 :(得分: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 和协议。

谢谢。

答案 8 :(得分:0)

您可以为任何服务器使用默认基本URL路径 那必须在config文件夹中使用&gt; config.php文件 取代你:

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

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

它自动找到您的文件夹形成任何服务器

答案 9 :(得分:0)

应用程序&gt; config&gt;的config.php

搜索$ config [&#39; base_url&#39;]并将您的网站设为&#34; // example.com&#34; (跳过协议)

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

这适合我。

答案 10 :(得分:-1)

  

动态基本网址(codeigniter)

     

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

     

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

答案 11 :(得分:-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

答案 12 :(得分:-1)

像这样更改config.php。

$ark_root  = "http://".$_SERVER['HTTP_HOST'];
$ark_root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
$config['base_url'] = $ark_root;

答案 13 :(得分:-1)

Base url set in CodeIgniter for all url

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

答案 14 :(得分:-1)

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

这样你就可以为你配置base_url,然后就不用担心托管了。两者都在localhost和server中工作。

答案 15 :(得分:-1)

你错过Double引号吗?

  

$ config [&#39; base_url&#39;] =&#34; someurl.com/mysite"

答案 16 :(得分:-2)

尝试将控制器添加到索引页面。刚刚在我自己的网站上看到类似的结构,我将我的基本网址设置为=“somedomain.com/v2/controller”