Codeigniter分页链接转到404 Page Not Found

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeigniter分页链接转到404 Page Not Found相关的知识,希望对你有一定的参考价值。

我将这个Paginate with search result实现到我的CI项目中,但是我无法将我的分页链接转到下一页,例如:

我第一次加载的搜索页面是http://localhost/ci_project/search,当我点​​击将转到http://localhost/ci_project/search/2的分页链接时,页面显示为404 Page Not Found

有人可以帮我弄清楚我的代码中有什么问题吗?我尝试了很多关于解决方案的建议,但无法帮助,大部分问题来自$config['base_url'] = base_url('search');,但没有一个是有帮助的。

模型:

public function do_search_count($keywords)
{
    $sql = "SELECT COUNT(*) AS cnt FROM products WHERE MATCH (name, manufacturer) AGAINST ('".$keywords."')";
    $q = $this->db->query($sql);
    $row = $q->row();
    return $row->cnt;
}

public function do_search($keywords, $per_page, $limit)
{
    $this->db->escape($keywords);

    $this->db->where('MATCH (name, manufacturer) AGAINST ("'.$keywords.'") LIMIT '.$per_page.', '.$limit, NULL, FALSE);
    $query = $this->db->get('products');

    if($query->num_rows() > 0){
        return $query->result();
    }else{
        return false;
    }
}

控制器:

function search()
{
    $keywords = $this->input->post('search');

    $searchterm = $this->db_model->searchterm_handler($this->input->get_post('search', TRUE));
    $limit = ($this->uri->segment(2) > 0)?$this->uri->segment(2):0;

    $config['base_url'] = base_url('search');
    $config['total_rows'] = $this->db_model->do_search_count($searchterm);
    $config['per_page'] = 5;
    $config['uri_segment'] = 2;
    $config['use_page_numbers'] = TRUE;
    $choice = $config['total_rows'] / $config['per_page'];
    $config['num_links'] = round($choice);  

    $this->pagination->initialize($config);

    $data['results'] = $this->db_model->do_search(trim($keywords), $limit, $config['per_page']);
    $data['pagination'] = $this->pagination->create_links();
    $data['searchterm'] = $searchterm;

    $data['total'] = count($data['results']);
    $data['title'] = 'Search';

    $this->load->view('header', $data);
    $this->load->view('search', $data);
    $this->load->view('footer', $data);
}

谢谢。

答案

尝试:

$config['base_url'] = base_url('controller_name/search');
$config['uri_segment'] = 3;
另一答案

codeigniter中的http://localhost/ci_project/search/2可能正在尝试使用通常的配置执行一个名为2的方法,如果你的方法是search,请务必在http://localhost/ci_project/search_controller/search/2调用url。

如果由于某种原因想要更改配置,可以启动diggin here

另一答案

试试这个

$config['base_url'] = base_url('index.php/controller_name/method_name');

无需更改路由配置,这对我有用。

以上是关于Codeigniter分页链接转到404 Page Not Found的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 codeigniter 中的分页不起作用? (404 未找到)

CodeIgniter 中的分页问题

codeigniter 分页首页 URL

Codeigniter 404 Page Not Found 找不到您请求的页面

Codeigniter 分页 URL 以 ?page=1 开头,依此类推

Codeigniter 3.0.4 在我的服务器上出现 404 Page Not Found 错误