当我的网站处于开发环境时 - 它是网址: testurl.com
现在在生产服务器上,我的codeigniter应用程序的地址必须是 someurl.com/mysite /
我把它移到那里,每次我试图运行一些功能,例如 / home / test - 它让我进入 someurl.com/home/test - 这是错误的。
必须 someurl.com/mysite/home/test - 如何解决?我确实设置了
$config['base_url'] = someurl.com/mysite/
答案 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”