尽管该页面存在Codeigniter仍出现错误404

时间:2019-01-06 17:23:58

标签: php codeigniter

我正在使用website.com/profile/nameofuser之类的东西。 但是,如果我有website.com/profile/_nameofuser,我会得到404 error,而website.com/profile/nameofuser_website.com/profile/nameof_user也在工作。这与可接受的字符无关,但是出了什么问题?

class Profile extends CI_Controller {

public function __construct() 
{       
    parent:: __construct();
    $this->load->model('Profile_model');  
    $this->load->helper(array('url', 'form', 'htmlpurifier'));
}

public function index() {
    $this->load->library('form_validation');

    if(getUserData($this->uri->segment(2), "ID") < 0) {
        $this->session->set_flashdata('error', 'Profil inexistent.');
        redirect(base_url());
    }

    if (!is_cache_valid(md5('profile' . $this->uri->segment(2) . ''), 300)){
            $this->db->cache_delete('profile', $this->uri->segment(2));
        }

    if(getUserData($this->uri->segment(2), "ID") > 0) {

        /* some mysql queries.. */
        }

        $data["main_content"] = 'profile/profile_view';
        $this->load->view('includes/template.php', $data); 
    } else {
        $this->session->set_flashdata('error', 'Profil inexistent.');
        redirect(base_url());
    }
}
function _remap($method,$args)
{
    if (method_exists($this, $method))
    {
        $this->$method($args);  
    }
    else
    {
        $this->index($method,$args);
    }
}
}

这是我的个人资料控制器。我真的不知道出什么问题了。如果我输入了无效的配置文件,则会重定向并返回错误的flashdata,这样就可以了。也许是重映射问题?

2 个答案:

答案 0 :(得分:0)

1)检查视图文件中的fie格式..如果它是html文件,这意味着您不能不使用其格式来调用它 例如 如果您的文件是php格式,请命名为home-view.php 您可以将其称为

$this->load->view('home-view');

但如果它是html文件,则名称在home-view.html中 因此,您必须将其扩展名为

$this->load->view('home-view.html');

答案 1 :(得分:0)

您对/profile/nameofuser的呼叫缺少MVC体系结构的基本要求。

您需要调用控制器/方法组合(在CI中,您的基本网址是domain.com/controller/method)...

由于在个人档案控制器中没有针对每个用户的特定方法,这实际上是一件好事,因此您需要在控制器中处理您的用户的方法。您已经拥有它,它名为index

如果将URL指向/profile/index/nameofuser并将$this->uri->segment(2)更改为$this->uri->segment(3),则应该可以使用它

尝试一下,让我知道