【问题标题】:Codeigniter redirect URL issueCodeigniter 重定向 URL 问题
【发布时间】:2015-11-12 09:52:39
【问题描述】:

我是 Codeigniter 的新手。我刚刚在谷歌的帮助下在 CI 中创建了一个登录功能,但在这里我在登录时重定向到 URL,但它不起作用。 这是详细信息 重定向链接后是这样的http://localhost/xpensepedia/index.php/home 这给出了 404 错误

404 Page Not Found
The page you requested was not found.

我的控制器是

public function index() {
        $this->load->view('header');
        if (($this->session->userdata('user_id') != "")) {
            redirect(site_url('home'));
        } else {
            $this->load->view("register");
        }
    $this->load->view('footer');
}

我的文件在图片中

【问题讨论】:

  • 你的 apache 重写模块启用了吗?
  • 请出示您的控制器代码
  • 如果CI3,user.php需要是User.php

标签: php .htaccess codeigniter mod-rewrite


【解决方案1】:

请检查你给 home.php 控制器的类的名称

【讨论】:

  • 我没有对 home.php 做任何事情,home.php 只在我的视图文件夹中可用。
  • 第一件事。如果是 Controller 则应该放在 Controller 中。其次,如果您使用的是 Codeigniter 3.0,则将其命名为 Home.php 您不能使用重定向功能重新定向视图。它重定向到控制器。而且我在您的控制器中没有看到任何 Home.php ..
  • 你是对的人,我的问题通过制作一个家用控制器解决了。谢谢
【解决方案2】:

试试这个...

public function index() {

    if (($this->session->userdata('user_id') != "")) {
        redirect(site_url('home'));
    } else {
        $this->load->view('header');
        $this->load->view("register");
        $this->load->view('footer');
    }

}

家庭控制器:

class Home extends CI_Controller {
       Public function index {
          $this->load->view('header');
          $this->load->view("home");
          $this->load->view('footer');
       }
}

【讨论】:

  • 感谢您的评论。是的,它正在工作,但是即使我已登录,URL 也会显示为localhost/xpensepedia/index.php/user/login
  • 这是当前控制器名称...所以您必须创建一个名为“Home”的新控制器,然后如果会话已设置,则重定向到主控制器。那么 url 看起来像 localhost/xpensepedia/index.php/user/home
【解决方案3】:

您可以在约束中添加 url 路径 .... 你在常量上定义这样的url:

define('ROUTE_STIE_PATH','localhost/xxx'); 
define('ROUTE_STIE_PATH_LOGIN',ROUTE_STIE_PATH.'login/'); 
define('ROUTE_STIE_PATH_HOME',ROUTE_STIE_PATH.'home/');

然后你可以简单地回显

echo ROUTE_STIE_PATH_LOGIN

如果你想在家里调用任何方法,那么

echo ROUTE_STIE_PATH_HOME.'methodname';

【讨论】:

  • 你的意思是我必须为家里做一个控制器?我只是将 home.php 放在视图文件夹中。没有为 home.php 制作控制器
  • 没有。除非您出于逻辑目的需要它,否则您不必制作任何家庭控制器。你检查了你当前的控制器名称和文件名吗?
  • 我通过添加我的文件层次结构的屏幕截图改进了我的问题。你可以在那里看到。但请帮我解决这个问题。
  • 是的,我已经检查过了。你告诉我的一切都很好。
  • 我在重定向时发现了您的错误,condeigniter 将首先查找控制器而不是视图。因此,如果你想把它做好,那么你可以制作一个 home 控制器,然后加载 view home。这将起作用,但如果您想直接加载视图主页,那么 ... $this->load->view("home");
【解决方案4】:

当我将位于application>config>config.php 的配置文件更改为以下值时,我解决了类似的情况:

$config['base_url'] = '';
$config['uri_protocol'] = 'REQUEST_URI';

【讨论】:

    猜你喜欢
    • 2016-07-02
    • 2015-04-15
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多