Php 代码点火器路由和slug给了我404

Php 代码点火器路由和slug给了我404,php,codeigniter,slug,Php,Codeigniter,Slug,我正在一个客户端网站上工作,其中一部分用于检索新闻,这是我的第一个codeigniter应用程序,我遵循了CI教程、Slug和路由 我遇到的问题是,一切都很好,但如果要获得基于slug的记录,我会得到404。我所做的是从我的URL中删除index.php并对其进行测试,效果很好 这是我的路线。php $route['default_controller'] = "welcome"; $route['404_override'] = ''; $route['news/(:any)'] = 'ne

我正在一个客户端网站上工作,其中一部分用于检索新闻,这是我的第一个codeigniter应用程序,我遵循了CI教程、Slug和路由

我遇到的问题是,一切都很好,但如果要获得基于slug的记录,我会得到404。我所做的是从我的URL中删除index.php并对其进行测试,效果很好

这是我的路线。php

$route['default_controller'] = "welcome";
$route['404_override'] = '';

$route['news/(:any)'] = 'news/singe_news/$1';
$route['news'] = 'news';
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class News_model extends CI_Model {


    function get_all(){

    $sql="SELECT * FROM news AS news";  
    $query=$this->db->query($sql);
    return $query->result();

    }

    //// get a single post

    function get_single($slug = FALSE) {

    if ($slug === FALSE)
        {
        $query = $this->db->get('news');
            return $query->result_array();
        }

    $query = $this->db->get_where('news', array('slug' => $slug));
    return $query->row_array();


    }


    function news_categories(){

     $sql="SELECT * FROM news_categories";  
     $query=$this->db->query($sql);
     return $query->result();

    }

}
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class News extends CI_Controller {



    public function index()
    {
        $this->load->model('news_model');
        $data['results']=$this->news_model->get_all();
        $this->load->view('public/header', $data);
        $this->load->view('public/menu');
        $this->load->view('public/news-listing', $data);
        $this->load->view('public/footer', $data);
    }



    public function single_news($slug) {


        $this->load->model('news_model');
        $data['single_news'] = $this->news_model->get_single();

    /// if (empty($data['single_news']))
        /// {
            /// show_404();
            ///}

        $this->load->view('public/header');
        $this->load->view('public/menu');
        $this->load->view('public/single-news', $data);
        $this->load->view('public/footer'); 


    }

}
这是我的模型新闻\u model.php

$route['default_controller'] = "welcome";
$route['404_override'] = '';

$route['news/(:any)'] = 'news/singe_news/$1';
$route['news'] = 'news';
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class News_model extends CI_Model {


    function get_all(){

    $sql="SELECT * FROM news AS news";  
    $query=$this->db->query($sql);
    return $query->result();

    }

    //// get a single post

    function get_single($slug = FALSE) {

    if ($slug === FALSE)
        {
        $query = $this->db->get('news');
            return $query->result_array();
        }

    $query = $this->db->get_where('news', array('slug' => $slug));
    return $query->row_array();


    }


    function news_categories(){

     $sql="SELECT * FROM news_categories";  
     $query=$this->db->query($sql);
     return $query->result();

    }

}
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class News extends CI_Controller {



    public function index()
    {
        $this->load->model('news_model');
        $data['results']=$this->news_model->get_all();
        $this->load->view('public/header', $data);
        $this->load->view('public/menu');
        $this->load->view('public/news-listing', $data);
        $this->load->view('public/footer', $data);
    }



    public function single_news($slug) {


        $this->load->model('news_model');
        $data['single_news'] = $this->news_model->get_single();

    /// if (empty($data['single_news']))
        /// {
            /// show_404();
            ///}

        $this->load->view('public/header');
        $this->load->view('public/menu');
        $this->load->view('public/single-news', $data);
        $this->load->view('public/footer'); 


    }

}
美元slug从何而来

您的URI如下所示:www.example.com/controller/method/arg1/arg2/arg3(不带查询字符串)

少了什么吗

嗯,你应该做几件事:

  • 使用autoload(config/autoload.php)加载您最常用的模型,或者如果这个模型没有广泛使用,至少在类构造函数中加载它

  • 您没有将$slug参数传递给model方法,即使您要修复路由,这也不会起作用

    $data['single_news']=$this->news_model->get_single()

  • 最好显示404,如果找不到slug,不要在fail时重新蚀刻所有数据

  • 要修复404错误,请执行以下步骤:

  • 检查.htaccess文件是否存在错误

  • 检查配置中的uri_协议设置

  • 尝试这样的路由:$route['news/(.+)$)?']=“news/singe_news/$1”;(这将取代新闻的两条路线)


  • 更改
    $route['news/(:any)]='news/singe_news/$1'
    $route['news/(:any)]='news/single_news/$1'图例,所以解决方案是1-正确的路由,2-向模型传递$slug,3-向类添加构造函数