Codeigniter 分页链接转到 404 Page Not Found

Posted

技术标签:

【中文标题】Codeigniter 分页链接转到 404 Page Not Found【英文标题】:Codeigniter pagination link go to 404 Page Not Found 【发布时间】:2013-10-07 14:53:39 【问题描述】:

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

我的搜索页面第一次加载时是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);

谢谢。

【问题讨论】:

【参考方案1】:

试试:

$config['base_url'] = base_url('controller_name/search');
$config['uri_segment'] = 3;

【讨论】:

这行得通,但是当我转到第 2 页时,没有显示任何记录,它从第 2 页到第 1 页发生 为此,您需要检查您的查询是否正确设置了限制和偏移量。使用$this->db->last_query() 输出您的查询。如果对您有帮助,请考虑接受答案。 @Nil'z my $this->db->last_query() 在第一页显示SELECT * FROM user_data LIMIT 5 ,但是当我单击page 2 时,它会移动到object not found 404:(请帮我解决:( @Nil'z 我关注了这个link。请帮助我!!【参考方案2】:

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

如果由于某种原因想更改配置,可以开始digginhere

【讨论】:

我在 routes.php 中重新映射了$route['search/(:num)'] = 'search_controller/search/$1';。现在我的分页链接是有效的,但是当我转到下一页http://localhost/irenov/search/2时,没有显示剩余记录?【参考方案3】:

试试这个

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

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

【讨论】:

【参考方案4】:

试试这个: 如果您在索引页面调用这样的索引方法..

'base_url' => base_url('page/index'),

【讨论】:

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

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

CodeIgniter 中的分页问题

在 codeigniter 上搜索和分页

CodeIgniter 404 路由 - 404 个断开的链接和谷歌无法抓取网站但一切看起来都不错

Codeigniter 分页链接按降序/倒序排列?

Codeigniter 分页不呈现分页链接