【问题标题】:Why codeIgniter duplicating and appending URL?为什么 codeIgniter 复制和附加 URL?
【发布时间】:2012-06-05 09:06:17
【问题描述】:

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

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

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

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

在config.php中,

$config['base_url']= '';

home 控制器将重定向到 login 控制器(然后是 登录视图)看起来像这样:

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');
 }

}

或者可能是我需要配置的虚拟主机中的一些设置?

【问题讨论】:

    标签: codeigniter url


    【解决方案1】:

    $config['base_url']; 的基本网址前使用http:// 前缀 例如

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

    【讨论】:

    • 感谢您发布此问题的答案!在 Stack Overflow 上只回答 are discouraged 的代码,因为没有上下文的代码转储无法解释解决方案如何或为什么会起作用,使得原始发布者(或任何未来的读者)无法理解其背后的逻辑。请编辑您的问题并包含对您的代码的解释,以便其他人可以从您的回答中受益。
    【解决方案2】:
    $config['base_url']= '';
    

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

    应该是:

    $config['base_url']= 'http://yoursite.com/';
    

    【讨论】:

      【解决方案3】:

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

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

      相反,它只想要这个:

      header("Location: ...");
      

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

      case 'refresh'
      

      case 'xxxrefresh'
      

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

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

      【讨论】:

      • 你应该使用redirect('login');如果没有 'refresh' 参数,默认情况下将使用位置标头。修改核心也被认为是不好的做法。当您将 codeigniter 更新到最新版本时,您的所有更改都将丢失。
      • 您应该在redirect 函数中使用了method 参数,将其设置为location,而不是编辑核心类。见这里:codeigniter.com/user_guide/helpers/url_helper.html#redirect
      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2016-07-14
        • 1970-01-01
        • 2012-05-15
        • 2015-01-12
        • 2011-02-17
        • 2020-06-09
        • 2015-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多