当我将我的工作CI网络应用程序从我的本地主机移动到网站主机时,我遇到了“重复和附加网址”问题。
在我的localhost中,这有效(显示登录页面):http: // mylocal / someapp / - >它将重定向到http: // mylocal / someapp / index.php / login
但是,在迁移到虚拟主机后,尝试按以下方式访问它:http: // webhosting.com/someapp / ,不知怎的,它会自动附加到 HTTP:的 // webhosting.com/someapp/%20//webhosting.com/someapp/index.php/login
我的.htaccess不包含任何内容(适用于localhost)
在config.php中,
$config['base_url']= '';
主页 控制器,它将重定向到 登录 控制器(然后是 登录 视图)如下所示:
class Home extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
if($this->session->userdata('logged_in'))
{
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['username'];
$this->load->view('home_view', $data);
}
else
{
//If no session, redirect to login page
redirect('login', 'refresh');
}
}
function logout()
{
$this->session->unset_userdata('logged_in');
session_destroy();
redirect('home', 'refresh');
}
}
或者我可能需要配置网站主机中的一些设置?
答案 0 :(得分:4)
在http://
的基本网址前使用$config['base_url'];
前缀
e.g。
$config['base_url']=http://localhost/islam;
答案 1 :(得分:0)
$config['base_url']= '';
应包含您网站的基本网址。我认为这就是问题所在。
应该是:
$config['base_url']= 'http://yoursite.com/';
答案 2 :(得分:0)
找到自己的答案。事实证明,一些虚拟主机没有正确处理CI刷新。
header("Refresh:0;url=...");
相反,它只想要这个:
header("Location: ...");
所以,我改变了 url_helper.php (system / helpers / url_helper.php line:543),
case 'refresh'
到
case 'xxxrefresh'
这样它总是会跳过标题刷新并仅使用标题位置。 我不知道这是否是正确的解决方案,但它可以在我的网站上运行。 在从本地计算机迁移CodeIgniter代码之前,请测试您的虚拟主机特征。
希望这有助于将来的某些人。
答案 3 :(得分:0)
我有同样的问题"重复问题"与当地的安息。这是我的解决方案:在application / config / config.php中设置基本URL,例如:
$config['base_url'] = 'http://localhost/ci/';
添加http://
或https://
前缀以修复"重复问题"非常重要。当然,尾随斜线也是必要的。