为什么codeIgniter重复并附加URL?

时间:2012-05-31 05:39:07

标签: codeigniter url

当我将我的工作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');
 }

}

或者我可能需要配置网站主机中的一些设置?

4 个答案:

答案 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://前缀以修复"重复问题"非常重要。当然,尾随斜线也是必要的。

相关问题