2

当我将工作中的 CI webapp 从本地主机移动到虚拟主机时,我遇到了“复制和附加 URL”问题。

在我的本地主机中,这有效(显示登录页面): http: //mylocal/someapp/ --> 将重定向到 http: //mylocal/someapp/index.php/login

但是,在迁移到虚拟主机后,尝试像这样访问它: http://webhosting.com/someapp/ 不知何故它会自动附加为http://webhosting.com/someapp/%20//webhosting.com/someapp /index.php/登录

我的 .htaccess 不包含任何内容(适用于本地主机)

在 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

4 回答 4

5

例如,在基本 url 之前使用http://前缀 $config['base_url'];

$config['base_url']=http://localhost/islam;
于 2015-07-29T05:31:07.933 回答
0
$config['base_url']= '';

应包含您网站的基本网址。我认为这就是问题所在。

应该:

$config['base_url']= 'http://yoursite.com/';
于 2012-05-31T07:12:21.107 回答
0

我自己找到了答案。事实证明,一些虚拟主机没有正确处理 CI 刷新。

header("Refresh:0;url=...");

相反,它只想要这个:

header("Location: ...");

所以,我改变了url_helper.php (system/helpers/url_helper.php line:543),从

case 'refresh'

case 'xxxrefresh'

以便它始终跳过标头刷新并仅使用标头位置。我不知道这是否是正确的解决方案,但它适用于我的网站。在从本地计算机迁移 CodeIgniter 代码之前测试您的虚拟主机特性。

希望这对将来的人有所帮助。

于 2012-06-01T05:07:52.223 回答
0

我在本地安装时遇到了同样的“重复问题”。这是我的解决方案:在 application/config/config.php 中设置您的基本 URL,例如:

$config['base_url'] = 'http://localhost/ci/';

添加http://orhttps://前缀以解决“重复问题”很重要。当然,结尾的斜线也是必须的。

于 2016-01-22T20:27:43.813 回答